0

我有一个嵌套的哈希映射

 HashMap<Integer, HashMap<String,Integer>> productAdded = new HashMap<>();

我增加了价值

    int price=12;
    String name="Apple";
    productAdded.put(1, new HashMap(){{ put(name, price); }});

我正在尝试将其检索为

for(int i=1;i<=ProductList.productAdded.size();i++) 
{
    System.out.println(ProductList.productAdded.get(i).keySet()+"\t :$"+ProductList.productAdded.get(i).values());
}

实际输出

[大比萨]:$[12]

预期输出。

大比萨:12 美元

4

3 回答 3

2

用于每个循环进行迭代

for(Integer i :productAdded.keySet()) {
           for(String s: productAdded.get(i).keySet()) {
               System.out.println(s+"\t :$"+ProductList.productAdded.get(i).get(s));
           }
       }

您也可以通过使用 java 8 流 foreach 来做到这一点

ProductList.productAdded.keySet().stream().forEach(item->{
             ProductList.productAdded.get(item).keySet().stream().forEach(inneritem->{
                 System.out.println(inneritem+"\t :$"+ProductList.productAdded.get(item).get(inneritem));
             });
     });
于 2018-09-17T04:16:28.023 回答
0

keySet()和返回集合values(),因此额外的大括号。对于您的特定情况,重构keySet().iterator().next()values().iterator().next实现所需的输出格式。

于 2018-09-17T04:08:29.673 回答
0

虽然不推荐,但您可以执行以下操作:

ProductList.productAdded.get(i).keySet().toString().replace("[","").replace("]","");

值位相同。

或者你可以这样做:

String brackets = "[\\[\\]]";
ProductList.productAdded.get(i).keySet().toString().replaceAll(brackets,"");
于 2018-09-17T04:15:57.157 回答