【发布时间】:2019-04-05 19:19:45
【问题描述】:
List<Boolean> results = new ArrayList<>();
results.add(true);
results.add(true);
results.add(true);
results.add(false);
if (results.contains(false)) {
System.out.println(false);
} else {
System.out.println(true);
}
System.out.println(results.stream().reduce((a, b) -> a && b).get());
//System.out.println(!results.stream().anyMatch(a -> a == false));
System.out.println(!results.stream().anyMatch(a -> !a));
输出:
假
假
假的
仅供参考,结果是地图+收集操作的结果
List<Job> jobs;
List<Boolean> results = job.stream().map(j -> j.ready()).collect(Collector.toList())
如果我选择 reduce 或 anyMatch,我就不必收集 map 操作的结果。
从一个布尔值列表的结果中,如果至少有一个 false,我只想返回 false。
我可以通过 reduce 或 anyMatch 做到这一点。我有点不喜欢 reduce 中的 Optional,我有点不喜欢我必须否定 anyMatch
使用这两种方法有什么优缺点吗?
【问题讨论】:
标签: java java-8 java-stream