我有一个包含Boolean个字段的列表,如下所示:

var lst = List.of(true, false, false, false);

有一个物体是这样的:

public class GetBatchResponse {
  String batchCompleted;
  Integer totalCount;
  Integer processed;
  Integer pending;
}

上述对象当前填充的内容如下所示:

var resp = new GetBatchStatusResponse();

resp.setBatchCompleted(String.valueOf( !lst.contains(false));
resp.setTotalCount(lst.size());
resp.setProcessed((int)(lst.stream().filter(p ->p!=null && p == true).count()));
resp.setPending((int)(lst.stream().filter(p ->p==null || p == false).count()));

如何在单个循环中使用流API实现相同的功能?

推荐答案

我会用我认为最简单的方式来做:

var trueCount = Collections.frequency(lst, true);
var resp = new GetBatchStatusResponse();

resp.setBatchCompleted(String.valueOf(trueCount == lst.size());
resp.setTotalCount(lst.size());
resp.setProcessed(trueCount);
resp.setPending(lst.size() - trueCount);

不要立即想到使用流来解决所有可能出现的问题,但请记住,有时您可以使用更有用的集合方法.

Java相关问答推荐

如何为具有多对多关系的实体的给定SQL查询构建JPA规范?

Android视图覆盖不阻止点击它后面的控件

当切换javaFX场景时,stage的大小正在Minimize

为什么Java中的两个日期有差异?

弹簧靴和龙目岛

缩小画布比例后更改滚动窗格的内部大小

通过移动一个类解决了潜在的StubbingProblem.它怎麽工作?

在Spring终结点中,是否可以同时以大写和小写形式指定枚举常量?

如何使用带有谓词参数的方法,而不使用lambda表达式

我的Spring Boot测试显示&IlLegalStateException:无法加载某事的ApplicationContext.

为什么StandardOpenOption.CREATE不能通过Ubuntu在中小企业上运行?

S数学.exp的相同错误保证也适用于StrictMath.exp吗?

在一行中检索字符分隔字符串的第n个值

Java中的发布/订阅-Long Live和Short Live Publisher,哪种方法是正确的?

如何制作回文程序?

将基于实例编号的对象列表拆分为新的对象列表

Java编译器是否进行了持续的折叠优化,以及如何进行判断?

读取ConcurrentHashMap中的可变对象

ControlsFX RangeSlider在方向垂直时滞后

为什么Java编译器为没有参数的方法(getter方法)创建桥接方法