如果可能,我想替换以下代码以使用Java 8流:
final List<Long> myIds = new ArrayList<>();
List<Obj> myObjects = new ArrayList<>();
// myObject populated...
for (final Obj ob : myObjects) {
myIds.addAll(daoClass.findItemsById(ob.getId()));
}
daoClass.findItemsById
返回List<Long>
有人可以通过lambdas建议最好的方法吗?非常感谢。
答案 0 :(得分:8)
List<Long> myIds = myObjects.stream()
.map(Obj::getId)
.map(daoClass::findItemsById)
.flatMap(Collection::stream)
.collect(Collectors.toList());
答案 1 :(得分:2)
使用flatMap将多个列表组合成一个列表。
myObjects.stream()
.flatMap(ob -> daoClass.findItemsById(ob.getId()).stream())
.collect(Collectors.toList());
答案 2 :(得分:1)
flatMap it!
source.stream()
.flatMap(e -> daoClass.findItemsById(e.getId).stream())
.collect(Collectors.toCollection(ArrayList::new));