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

时间:2019-04-04 15:40:00

标签: java java-8 java-stream flatten

如何从整数的映射转到字符串列表,例如:

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

扁平化的列表,例如:

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

Java 8 中?

2 个答案:

答案 0 :(得分:3)

您可以在以下值上使用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());

答案 1 :(得分:1)

您可以使用此功能:

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]