每个调用方法和 addAll 的 Java 8 lambda

标签 java lambda collections java-stream

如果可能,我想替换以下代码以利用 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>

有人可以建议通过 lambda 执行此操作的最佳方法吗?非常感谢。

最佳答案

List<Long> myIds = myObjects.stream()
    .map(Obj::getId)
    .map(daoClass::findItemsById)
    .flatMap(Collection::stream)
    .collect(Collectors.toList());

关于每个调用方法和 addAll 的 Java 8 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50104764/

相关文章:

java - 一些碰撞检测建议

java - 在显示 Intent 之前稍等片刻

java - 在一个 JDBC 准备好的语句中插入两个不同的表

c++ - 右值 lambda 的 std::reference_wrapper 如何工作?

java - String -Java 8 lambda 中的重复项

python - 在python中仅拟合具有多个参数的函数的2个参数

java - 为什么 Java 对 HashMap 条目进行排序,尽管它不应该排序?

java - JavaFX 是 Java Applets 的替代品吗?

python - 为什么 collections.MutableSet 不提供更新方法?

java - 如何在 groovy 中收集列表的相似项目