【发布时间】:2019-06-12 19:12:34
【问题描述】:
我正在学习 Java 8 - Java 11,我得到了一个要转换为 java-streams 的代码。我有以下课程:
class Resource {
List<Capability> capabilities;
}
class Capability {
String namespace;
Map<String, Object> attributes;
}
我有一个资源流,我想从两个不同的命名空间(“a”、“b”)中提取其所有功能属性到我确定没有重复键的 Map<Resource, Map<String, Object>>。
我使用 map、flatMap 做了很多尝试,但使用这些,我无法保留对主要资源对象的引用。使用 java9 的新功能我可以进步,但我被困在下面的代码中,我能够返回所有属性,但是在一个集合中。 我还不能按功能命名空间过滤并将它们放在地图中:
Map<Resource, Set<Object>> result = pResolved.stream()
.collect(groupingBy(t -> t, flatMapping(
resource -> resource.getCapabilities(null).stream(),
flatMapping(
cap -> cap.getAttributes().entrySet().stream(),
toSet()))));
看来我是在正确的道路上。
【问题讨论】:
标签: java-streams java collections java-8 java-stream java-11