我有一个嵌套的哈希映射为
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
答案 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("]","");