【问题标题】:Iterate the creation of a HashMap as a value in another HashMap将 HashMap 的创建迭代为另一个 HashMap 中的值
【发布时间】:2012-11-23 11:37:04
【问题描述】:

我有一个 HashMap,键是某个类的对象,值是另一个 HashMap,键是字符串,值是双精度:

HashMap<MyClass, HashMap<String, Double>> myHashMap;

我需要一个循环来向这个 HashMap 添加键(对象)和值(HashMap),但我不能在循环中创建一个新的 HashMap 变量作为它的“值”。本质上,每个 MyClass 对象都必须有对应的双精度字符串。

这可能吗?这有什么意义吗??

【问题讨论】:

  • 是的,这是可能的,但请告诉我们您的尝试。
  • 等等,你说你的 HashMap 有String 作为键,但你使用的是Object。如果你有String 和对应的Double 对应一个Object,那么你为什么不创建一个HashMap&lt;String, List&lt;YourClass&gt;&gt;
  • 抱歉,Key确实是自定义类的Object
  • @Frisky.. 那么您的数据结构可能构建错误。您应该将String 作为keyList&lt;YourClassObject&gt; 作为值。我会发布一个答案。
  • 如果您可以使用第三方库,您可能会发现 Guava 的 Table 比嵌套地图更合适。 (披露:我为 Guava 做出了贡献。)

标签: java hashmap loops


【解决方案1】:

例子:

YourClass someObject = new YourClass();
//putting object to map with empty hashMap value
myHashMap.put(someObject, new HashMap<String,Double>());
//adding String,Double to created before hashMap value
myHashMap.get(someObject).put("PI", 3.14);

【讨论】:

    【解决方案2】:

    你的意思是:

        Object objectKey;
        String stringKey;
        Double value;
         .
         .
         .
    
        loop
    
        if(!myHashMap.containsKey(objectKey)){
            myHashMap.put(objectKey, new HashMap<String, Double>());
        }
    
        HashMap<String, Double> accordingHashMap = myHashMap.get(objectKey);
    
        accordingHashMap.put(stringKey, value)
    
        endloop
    

    【讨论】:

      猜你喜欢
      • 2015-10-31
      • 2017-07-27
      • 1970-01-01
      • 2011-07-09
      • 2020-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-06
      相关资源
      最近更新 更多