Получить ключи
//Get Keys of childHashMap
Set<String> keys = parent.keySet().stream().
flatMap(child -> child.keySet().stream()).
collect(Collectors.toSet());
1. Поток на keySet
родительского hashMap
(итерировать по дочернему хэш-карте)
2.Возврат keySet
дочернего хеш-карты (это похоже на {1},{2,3},{4,5}
)
child -> child.keySet().stream()
3.Запустите предыдущий шаг Установить (это как преобразовать {1},{2,3},{4,5}
в {1,2,3,4,5}
)
flatMap(child -> child.keySet().stream()).
4. Клавиши возврата
collect(Collectors.toSet());
Получить значения
//Get Values of childHashMap
Collection<String> values = parent.keySet().stream()
.map(HashMap::values)
.flatMap(Collection::stream)
.collect(Collectors.toList());
1.Stream keySet
родительского hashMap
(итерировать по дочернему хэш-карте)
2. Возвращаемые значения дочерней хэш-карты (например: {1},{2},{3}
)
3.Использование flatMap
для выравнивания предыдущего шага (Преобразование {1},{2},{3}
в {1,2,3}
)
flatMap(Collection::stream)
4.Сбор значений в список
collect(Collectors.toList())
Образец
//Parent
HashMap<HashMap<String, String>, String> parent = new HashMap<>();
//Child HashMap 1
HashMap<String, String> childHashMap = new HashMap<>();
childHashMap.put("a", "b");
//Child HashMap2
HashMap<String, String> childHashMap2 = new HashMap<>();
childHashMap2.put("d", "e");
//Parent init
parent.put(childHashMap, "c");
parent.put(childHashMap2, "f");
//Get Keys
Set<String> keys = parent.keySet().stream().flatMap(child -> child.keySet().stream()).collect(Collectors.toSet());
//Get values
Collection<String> values = parent.keySet().stream().map(HashMap::values).flatMap(Collection::stream).collect(Collectors.toList());
//Print key and values
keys.forEach(System.out::println);
values.forEach(System.out::println);
Результат =
keys = a ,d
значения = e , b