【问题标题】:Call HashMap Value from Another Method从另一个方法调用 HashMap 值
【发布时间】:2022-01-16 00:51:16
【问题描述】:

我正在尝试从另一种方法调用哈希图的值。当在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";
    }

【问题讨论】:

    标签: java hashmap


    【解决方案1】:

    你的setupMuseum() 方法没有用。它创建了一个Map,它甚至没有返回,也不是实例变量。您需要返回创建的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 类具有适当的 toString() 实现,该实现实际上包括其所有属性。


    作为旁注,请记住以下几点:

    • Java 中的变量通常遵循snakeCase,因此您应该将Museum 命名为museum
    • Java 类的名称不应大写,因此应将 MUSEUM 命名为 Museum
    • 您应该努力使用 Java 接口而不是具体的实现。这意味着您应该使用Map&lt;String, MUSEUM&gt; Museum = new HashMap&lt;String, MUSEUM&gt;(); 而不是HashMap&lt;String, MUSEUM&gt; Museum = new HashMap&lt;String, MUSEUM&gt;();,以便将变量声明为Map(接口)而不是HashMap(具体实现)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 2016-07-02
      • 2015-06-16
      • 1970-01-01
      • 2011-09-09
      • 2017-09-27
      相关资源
      最近更新 更多