HashMap的HashMap->输出问题
HashMap of HashMap-> output Problems
具有以下HashMap:
HashMap <String, HashMap <Integer, ArrayList <Reservation> >>
缓冲区;
我将输出两个哈希映射的每个键的每个值。我该怎么办?
这部分代码我已经写好了:
HashMap map=mod.getAllRecords();
for (Object key: map.keySet()) {
String Date=key.toString();
Object map2=map.get(key);
for(Object Key : ??){//<--------------
}
给出
Map<String, Map<Integer, List<Reservation>> map = new HashMap<>();
您可以打印出所有预订,如下所示。
map.values().stream()
.flatMap(m->m.values().stream())
.flatMap(List::stream)
.forEach(System.out::println); // prints each reservation
- 第一个流,流出内部映射(外部映射的值)
- flatMap 将该流替换为内部值流(列表)
- 最后一个 flatMap 流式传输列表。
以上假定 Reservation class 已覆盖 toString
如果你也想打印出所有的钥匙,你可以这样做。我缩进了输出以提供 key/value 层次结构。
map.forEach((k,v)-> {
System.out.println(k);
v.forEach((k1,v1)-> {
System.out.println(" " + k1);
v1.forEach(res->System.out.println(" " + res));
});
});
我知道的最简单的方法是编写三个 for 循环 - 第一个用于已经是字符串的关键元素本身,第二个用于第一个 HashMap 内的 HashMap 内的整数,第三个用于第二个 HashMap 的每个数组内的值哈希图:
for (String key: map.keySet()) {
System.out.println(key); //prints the strings
HashMap <Integer, ArrayList <Reservation> > map2 = map.get(key);
for(Integer key2 : map2.keySet()){
System.out.println(key2); //prints the integers
for (int i=0;i<map2.get(key2).size();i++) {
System.out.println(map2.get(key2)[i]); //prints everything in the array
}
}
}
具有以下HashMap:
HashMap <String, HashMap <Integer, ArrayList <Reservation> >>
缓冲区;
我将输出两个哈希映射的每个键的每个值。我该怎么办?
这部分代码我已经写好了:
HashMap map=mod.getAllRecords();
for (Object key: map.keySet()) {
String Date=key.toString();
Object map2=map.get(key);
for(Object Key : ??){//<--------------
}
给出
Map<String, Map<Integer, List<Reservation>> map = new HashMap<>();
您可以打印出所有预订,如下所示。
map.values().stream()
.flatMap(m->m.values().stream())
.flatMap(List::stream)
.forEach(System.out::println); // prints each reservation
- 第一个流,流出内部映射(外部映射的值)
- flatMap 将该流替换为内部值流(列表)
- 最后一个 flatMap 流式传输列表。
以上假定 Reservation class 已覆盖 toString
如果你也想打印出所有的钥匙,你可以这样做。我缩进了输出以提供 key/value 层次结构。
map.forEach((k,v)-> {
System.out.println(k);
v.forEach((k1,v1)-> {
System.out.println(" " + k1);
v1.forEach(res->System.out.println(" " + res));
});
});
我知道的最简单的方法是编写三个 for 循环 - 第一个用于已经是字符串的关键元素本身,第二个用于第一个 HashMap 内的 HashMap 内的整数,第三个用于第二个 HashMap 的每个数组内的值哈希图:
for (String key: map.keySet()) {
System.out.println(key); //prints the strings
HashMap <Integer, ArrayList <Reservation> > map2 = map.get(key);
for(Integer key2 : map2.keySet()){
System.out.println(key2); //prints the integers
for (int i=0;i<map2.get(key2).size();i++) {
System.out.println(map2.get(key2)[i]); //prints everything in the array
}
}
}