如何在 Java 8 中展平地图内的列表

How to flatten a list inside a map in Java 8

如何从 map 整数转换为字符串列表,例如:

<1, ["a", "b"]>,
<2, ["a", "b"]>

扁平化列表 的字符串,例如:

["1-a", "1-b", "2-a", "2-b"]

Java 8?

您可以对以下值使用 flatMap

map.values()
   .stream()
   .flatMap(List::stream)
   .collect(Collectors.toList());

或者,如果您要使用地图条目,您可以使用 Holger 指出的代码:

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]