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
            }
        }            
    }