java - 迭代我在列表中的另一个对象内的对象列表
问题描述
所以我有这样的结构
List<Object1> list1
class Object1{
private List<Object2> list2
}
class Object2{
private List<Object3> list3
}
我需要计算所有 Objects3 实例。我是 java-8 和流的新手,所以这对我来说很困惑,但我试图这样做。
Integer count =
list1
.parallelStream()
.reduce(0,(sum, q) -> q.getList2()
.forEach()
.reduce(0,(sum2, q2) -> sum2 + q2.getList3().size()));
我什至接近吗?
解决方案
鉴于您是流 API 的新手,我不怪您,但您的方法过于复杂。
为了简单和可读性,我个人会采用这种方法。
list1.stream() // Stream<Object1>
.flatMap(s -> s.getList2().stream()) // Stream<Object2>
.flatMap(s -> s.getList3().stream()) // Stream<Object3>
.count(); // return the count of all Object3 instances
推荐阅读
- r - 在容器中生成闪亮的进程时保留环境变量
- java - FCM - 从 Java 向我的 android 设备发送通知
- python-3.x - 如何在运行“conda install nb_conda”时解决“权限被拒绝”错误?
- mybatis - Mybatis resultMap中如何使用Multiple collection
- linux - 文件未排序后排序
- java - 从数据库加载 netflix zuul 路由值
- python - Gstreamer、Docker、udpsrc、OpenCV、Python... 不工作
- laravel - Laravel 日志异常
- vba - VBA - 如果单元格值更改,则移动行
- javascript - 使用 sequelize 获取字段中具有唯一值的所有行