Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 填充地图<;字符串,Map<;字符串,整数>&燃气轮机;有价值_Java_Loops_Dictionary - Fatal编程技术网

Java 填充地图<;字符串,Map<;字符串,整数>&燃气轮机;有价值

Java 填充地图<;字符串,Map<;字符串,整数>&燃气轮机;有价值,java,loops,dictionary,Java,Loops,Dictionary,我需要用值填充Map。我的代码如下: // tags, <types, prices> Map<String, Map<String, String>> outter = new HashMap<>(); List<String> tags = new ArrayList<String>(); tags.add("1tag"); tags.add("2tag"); List<

我需要用值填充
Map
。我的代码如下:

// 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=1.20, paper=2.20, metal=1.20, metal=2.20}, 1tag={paper=1.20, paper=2.20, metal=1.20, metal=2.20}}
如何防止重写值并获得正确的结果?
帮助..

因为不能在一个同名的地图中设置两个键。您应该在外部映射中创建一个ArrayList或类似的东西。

正如其他人所报告的那样,Java的映射接口将每个键映射到单个值。如果要为单个键指定多个值,可以手动执行(映射到列表)。或者使用已有的库,比如你的内部地图

这样,您将获得类似于:

filled outter:{2tag={paper=[1.20, 2.20], metal=[1.20, 2.20]}, 1tag={paper=[1.20, 2.20], metal=[1.20, 2.20]}}
您可以将地图定义为:

mapoutter=newhashmap();

您有一个使用Multimap的示例。

使用maps时不允许使用重复键。除了保留一堆地图,您应该使用对象(如
MyItem
)来保存所有相关信息。然后,可以使用集合或键控贴图存储这些对象,以供以后参考
filled outter:{2tag={paper=[1.20, 2.20], metal=[1.20, 2.20]}, 1tag={paper=[1.20, 2.20], metal=[1.20, 2.20]}}