将 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<String, List<YourClass>>
?
抱歉,Key确实是自定义类的Object
@Frisky.. 那么您的数据结构可能构建错误。您应该将String
作为key
、List<YourClassObject>
作为值。我会发布一个答案。
如果您可以使用第三方库,您可能会发现 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 中的值的主要内容,如果未能解决你的问题,请参考以下文章