使用Java8将Map <String,NavigableMap <Long,Collection >>转换为List
我试图将Map<String, NavigableMap<Long, Collection>>
转换为List
Java 8。
我写了一些代码,但在中间卡住了一些。
userTopics.values().stream().map( new Function<NavigableMap<Long, Collection>, Collection>() { @Override public Collection apply(NavigableMap<Long, Collection> t) { return null; //TODO } } );
只是flatMap
s ** t :
List values = nestedMap.entrySet() .stream() .map(Map.Entry::getValue) .flatMap(m -> m.entrySet().stream()) .map(Map.Entry::getValue) .flatMap(Collection::stream) .collect(toList());
正如霍尔格指出的那样,这更整洁:
List values = nestedMap.values() .stream() .flatMap(m -> m.values().stream()) .flatMap(Collection::stream) .collect(toList());
两个flatMaps
将完成,平放NavigableMap
,然后将Collection
平放在里面。
List result = mapOfMaps.values() .stream() .flatMap(v -> v.values().stream()) .flatMap(Collection::stream) .collect(Collectors.toList());