我正在尝试将Map<String, NavigableMap<Long, Collection<String>>>
转换为List<String>
Java 8。
我写了一些代码,但在中间的某些地方卡住了。
userTopics.values().stream().map(
new Function<NavigableMap<Long, Collection<String>>, Collection<String>>() {
@Override
public Collection<String> apply(NavigableMap<Long, Collection<String>> t) {
return null; //TODO
}
}
);
答案 0 :(得分:4)
List<String> values = nestedMap.entrySet()
.stream()
.map(Map.Entry::getValue)
.flatMap(m -> m.entrySet().stream())
.map(Map.Entry::getValue)
.flatMap(Collection::stream)
.collect(toList());
正如Holger指出的那样,这更整洁:
List<String> values = nestedMap.values()
.stream()
.flatMap(m -> m.values().stream())
.flatMap(Collection::stream)
.collect(toList());
答案 1 :(得分:3)
两个flatMaps
会做,将NavigableMap
弄平,然后将Collection
放平。
List<String> result = mapOfMaps.values()
.stream()
.flatMap(v -> v.values().stream())
.flatMap(Collection::stream)
.collect(Collectors.toList());