Java 8流将内部流结果合并到上面的流中

Sou*_*Cub 4 java java-8 java-stream

也许这是变态,但我想在上面的级别上合并内部流的结果.

例如,我们有一些带有数据的复杂地图:

Map<String, List<Map<String, Object>>> dataMap
Run Code Online (Sandbox Code Playgroud)

我需要收集所有对象列表.现在我这样做:

Set<Object> segmentIds = new HashSet<>();
dataMap.values().forEach(maps -> maps.forEach(map -> segmentIds.add(map.get("object"))));
Run Code Online (Sandbox Code Playgroud)

但它不是那么漂亮的方式.但我无法理解如何将数据从内循环传递到外部以最终收集它们.

没有任何外部物体可以做到吗?

Rom*_*hyn 6

怎么样:

Set<Object> collect = dataMap.values()
            .stream()
            .flatMap(Collection::stream)
            .map(map -> map.get("object"))
            .collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)