Aka*_*ari 1 java java-stream java-17
Boolean
我有一个看起来像这样的字段列表:
var lst = List.of(true, false, false, false);
Run Code Online (Sandbox Code Playgroud)
有一个这样的对象:
public class GetBatchStatusResponse {
String batchCompleted;
Integer totalCount;
Integer processed;
Integer pending;
}
Run Code Online (Sandbox Code Playgroud)
上面的对象当前填充有如下内容:
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()));
Run Code Online (Sandbox Code Playgroud)
如何在单个循环中使用流 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);
Run Code Online (Sandbox Code Playgroud)
不要立即考虑使用流来解决每个可以想到的问题,但请记住,有时您可以使用更有用的 Collections 方法。
归档时间: |
|
查看次数: |
123 次 |
最近记录: |