简体   繁体   English

使用Java8将Map <String,NavigableMap <Long,Collection <String >>>转换为List <String>

[英]Convert Map<String, NavigableMap<Long, Collection<String>>> to List<String> using Java8

I am trying to convert Map<String, NavigableMap<Long, Collection<String>>> into List<String> Java 8. 我试图将Map<String, NavigableMap<Long, Collection<String>>>转换为List<String> Java 8。

I wrote some code but got stuck some where in mid. 我写了一些代码,但在中间卡住了一些。

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
        }
    }
);

Just flatMap that s**t : 只是flatMap s ** t

List<String> values = nestedMap.entrySet()
        .stream()
        .map(Map.Entry::getValue)
        .flatMap(m -> m.entrySet().stream())
        .map(Map.Entry::getValue)
        .flatMap(Collection::stream)
        .collect(toList());

As Holger points out, this is neater: 正如霍尔格指出的那样,这更整洁:

List<String> values = nestedMap.values()
        .stream()
        .flatMap(m -> m.values().stream())
        .flatMap(Collection::stream)
        .collect(toList());

Two flatMaps will do, flat the NavigableMap and then flat the Collection inside. 两个flatMaps可以做,平放NavigableMap ,然后将Collection平放在里面。

List<String> result = mapOfMaps.values()
            .stream()
            .flatMap(v -> v.values().stream())
            .flatMap(Collection::stream)
            .collect(Collectors.toList());

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM