Java中是否有相当于Javascript的Array.map
?
我一直在玩Java 8:
List<Long> roleList = siteServiceList.stream()
.map(s -> s.getRoleIdList()).collect(Collectors.toList());
但这不起作用我不知道为什么警告说Incompatible Type
。
如何在Java8中执行此操作?
答案 0 :(得分:8)
如果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());