【发布时间】:2021-01-18 16:56:33
【问题描述】:
我需要用值填充Map<String, Map<String, Integer>>。我的代码如下:
// tags, <types, prices>
Map<String, Map<String, String>> outter = new HashMap<>();
List<String> tags = new ArrayList<String>();
tags.add("1tag");
tags.add("2tag");
List<String> types = new ArrayList<String>();
types.add("paper");
types.add("metal");
List<String> prices = new ArrayList<String>();
prices.add("1.20");
prices.add("2.20");
for (int t = 0; t < tags.size(); t++) {
Map<String, String> inner = new HashMap<>();
for (int tp = 0; tp < types.size(); tp++) {
for (int p = 0; p < prices.size(); p++) {
inner.put(types.get(tp), prices.get(p));
}
}
outter.put(tags.get(t), inner);
}
System.out.println("filled outter:" + outter);
结果是:
filled outter:{2tag={paper=2.20, metal=2.20}, 1tag={paper=2.20, metal=2.20}}
我想要的正确结果是:
filled outter:{2tag={paper=1.20, paper=2.20, metal=1.20, metal=2.20}, 1tag={paper=1.20, paper=2.20, metal=1.20, metal=2.20}}
如何防止覆盖值并获得正确的结果? 帮助..
【问题讨论】:
-
使用地图时不允许重复键
-
与其保留一堆地图,不如使用一个对象(如
MyItem)来保存所有这些相关信息。然后您可以使用集合或键控映射来存储这些对象以供以后参考
标签: java loops dictionary