Stream API 在空集合上的表现如何?在集合上执行流命令链之前检查是否为空是否有意义?例如,第一个或第二个示例块的总运行时间更好吗?List a = new ArrayList(); return a.stream.anyMatch("OK"::equals).orElse(null);与List a = new ArrayList();if(a.isEmpty()) { return null;} else { return a.stream.anyMatch("OK"::equals).orElse(null);}我知道第一个选项更漂亮,但这是一个关于性能的问题。
1 回答
喵喵时光机
TA贡献1846条经验 获得超7个赞
在集合上执行流命令链之前检查是否为空是否有意义?
从性能的角度来看,这可能会有所帮助,因为它绝对可以防止空流花费(一点)CPU 时间而不执行任何操作。
但从概念的角度来看:这不是一个好主意。流的全部要点是您不关心条目的数量。流(在很大程度上)是一种以“函数式编程”方式表达逻辑的方式。空流返回“空”结果。这就是它们的工作原理和使用方式。
例如,如果您预先添加不同的检查,那么您的代码还需要提供该空结果。
关于性能,您真正需要谨慎的事情是:大量流操作经常在少量元素上运行。
添加回答
举报
0/150
提交
取消