从另一个方法调用 HashMap 值
Call HashMap Value from Another Method
我正在尝试从另一种方法调用哈希图的值。当在 ref
中调用 TW
时,我需要打印值 1, "Twin", 200, 200
而不是 "YES"
。但是请记住,我必须将 setupMuseum
保留为 private
。我尝试了不同的方法,但每次都以错误告终。
private void setupMuseum() {
HashMap<String, MUSEUM>Museum= new HashMap<String, MUSEUM>();
Museum.put("TW", new MUSEUM(1, "Twin", 200, 200));
}
public String getMuseumDetails(String ref) {
if ("TW".equals(ref) ){
System.out.println("YES");
}else
return "!";
return "\nNo such thing";
}
你的setupMuseum()
方法没有用。它创建了一个 Map
甚至没有 returned 并且也不是实例变量。您需要 return 创建的 Map
然后您可以打印其中的任何内容:
private Map<String, MUSEUM> setupMuseum() {
HashMap<String, MUSEUM> Museum = new HashMap<String, MUSEUM>();
Museum.put("TW", new MUSEUM(1, "Twin", 200, 200));
return Museum;
}
然后在您的 getMuseumDetails()
方法中,您需要调用 setupMuseum()
并打印值:
public String getMuseumDetails(String ref) {
if ("TW".equals(ref) ){
HashMap<String, MUSEUM> museum = getMuseumDetails();
System.out.println(museum.get("TW"));
} else {
return "!";
}
return "\nNo such thing"; // This is unreachable
}
这是假设两种方法都在同一个文件中,因此 setupMuseum()
可以在 getMuseumDetails()
内到达。这还假设您的 MUSEUM
class 有一个适当的 toString()
实现,实际上包括它的所有属性。
作为旁注,请牢记以下几点:
- 通常,Java中的变量遵循snakeCase,所以你应该将
Museum
命名为museum
。
- Java classes 的名称不应为大写,因此您应将
MUSEUM
命名为 Museum
.
- 您应该努力使用 Java 接口而不是具体实现。这意味着您应该使用
Map<String, MUSEUM> Museum = new HashMap<String, MUSEUM>();
而不是 HashMap<String, MUSEUM> Museum = new HashMap<String, MUSEUM>();
,这样您就可以将变量声明为 Map
(接口)而不是 HashMap
(具体实现)。
我正在尝试从另一种方法调用哈希图的值。当在 ref
中调用 TW
时,我需要打印值 1, "Twin", 200, 200
而不是 "YES"
。但是请记住,我必须将 setupMuseum
保留为 private
。我尝试了不同的方法,但每次都以错误告终。
private void setupMuseum() {
HashMap<String, MUSEUM>Museum= new HashMap<String, MUSEUM>();
Museum.put("TW", new MUSEUM(1, "Twin", 200, 200));
}
public String getMuseumDetails(String ref) {
if ("TW".equals(ref) ){
System.out.println("YES");
}else
return "!";
return "\nNo such thing";
}
你的setupMuseum()
方法没有用。它创建了一个 Map
甚至没有 returned 并且也不是实例变量。您需要 return 创建的 Map
然后您可以打印其中的任何内容:
private Map<String, MUSEUM> setupMuseum() {
HashMap<String, MUSEUM> Museum = new HashMap<String, MUSEUM>();
Museum.put("TW", new MUSEUM(1, "Twin", 200, 200));
return Museum;
}
然后在您的 getMuseumDetails()
方法中,您需要调用 setupMuseum()
并打印值:
public String getMuseumDetails(String ref) {
if ("TW".equals(ref) ){
HashMap<String, MUSEUM> museum = getMuseumDetails();
System.out.println(museum.get("TW"));
} else {
return "!";
}
return "\nNo such thing"; // This is unreachable
}
这是假设两种方法都在同一个文件中,因此 setupMuseum()
可以在 getMuseumDetails()
内到达。这还假设您的 MUSEUM
class 有一个适当的 toString()
实现,实际上包括它的所有属性。
作为旁注,请牢记以下几点:
- 通常,Java中的变量遵循snakeCase,所以你应该将
Museum
命名为museum
。 - Java classes 的名称不应为大写,因此您应将
MUSEUM
命名为Museum
. - 您应该努力使用 Java 接口而不是具体实现。这意味着您应该使用
Map<String, MUSEUM> Museum = new HashMap<String, MUSEUM>();
而不是HashMap<String, MUSEUM> Museum = new HashMap<String, MUSEUM>();
,这样您就可以将变量声明为Map
(接口)而不是HashMap
(具体实现)。