将 HashMap 的创建迭代为另一个 HashMap 中的值

Posted

技术标签:

【中文标题】将 HashMap 的创建迭代为另一个 HashMap 中的值【英文标题】:Iterate the creation of a HashMap as a value in another 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 做出了贡献。) 【参考方案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

【讨论】:

以上是关于将 HashMap 的创建迭代为另一个 HashMap 中的值的主要内容,如果未能解决你的问题,请参考以下文章

当正确显示所有内容时,范围不能迭代为真?

如何在 Pandas 中将 DataFrame 的行迭代为 Series?

兼容性测试规范-移动端

左式堆

敏捷开发流程介绍

Map...---HashMap和Hashtable的区别-----...LinkedHashMap