在Java 8中是否有相当于Javascript的Array.map?

时间:2017-11-26 10:43:00

标签: java java-8

Java中是否有相当于Javascript的Array.map

我一直在玩Java 8:

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

但这不起作用我不知道为什么警告说Incompatible Type

如何在Java8中执行此操作?

1 个答案:

答案 0 :(得分:8)

如果roleIdListList<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());