如何从嵌套散列图中以良好的视图检索数据?

时间:2018-09-17 03:57:39

标签: java hashmap

我有一个嵌套的哈希映射为

 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

3 个答案:

答案 0 :(得分: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));
             });
     });

答案 1 :(得分:0)

keySet()values()都返回集合,因此还有其他花括号。对于您的特定情况,请重构为keySet().iterator().next()values().iterator().next以实现所需的输出格式。

答案 2 :(得分:0)

尽管不建议这样做,但您可以执行以下操作:

a, b

与值位相同。

或者您可以执行以下操作:

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