Как перейти от карты целых чисел к спискам строк, таких как:
<1, ["a", "b"]>, <2, ["a", "b"]>
, к сведенному списку строк, таких как:
["1-a", "1-b", "2-a", "2-b"]
в Java 8 ?
Вы можете использовать flatMap для значений как:
flatMap
map.values() .stream() .flatMap(List::stream) .collect(Collectors.toList());
Или, если вы хотите использовать записи на карте, вы можете использовать код, указанный Хольгером:
map.entries() .stream() .flatMap(e -> e.getValue().stream().map(s -> e.getKey() + s)) .collect(Collectors.toList());
Вы можете просто использовать это:
List<String> result = map.entrySet().stream() .flatMap(entry -> entry.getValue().stream().map(string -> entry.getKey() + "-" + string)) .collect(Collectors.toList());
Это перебирает все записи на карте, объединяет все значения с их ключом и собирает его в новый список.
Результат будет:
[1-a, 1-b, 2-a, 2-b]