Java 8中是否有类似于JavaScript的Array.map方法的等效方法?

16

Java中是否有类似于Javascript的Array.map的等效方法?

我一直在研究Java 8:

List<Long> roleList = siteServiceList.stream()
        .map(s -> s.getRoleIdList()).collect(Collectors.toList());

但是这并不起作用,我不知道为什么警告会说 类型不兼容

在Java8中我该怎么做?


1
定义“不起作用”。发布所有相关代码和您收到的确切完整错误。错误消息非常重要。 - JB Nizet
它能够使用List<List<Long>>吗? - Andy Turner
1个回答

18
如果 roleIdList 是一个 List<Long>,并且您想获取一个 List<Long>,则必须使用 flatMap
List<Long> roleList = siteServiceList.stream()
                .flatMap(s -> s.getRoleIdList().stream())
                .collect(Collectors.toList());

如果坚持使用map,返回类型应为List<List<Long>>

List<List<Long>> roleList = siteServiceList.stream()
    .map(MyObject::getRoleIdList)
    .collect(Collectors.toList());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接