猿问

在 Java 中,在应用流函数链之前检查集合是否为空是否可以提高性能?

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);

}

我知道第一个选项更漂亮,但这是一个关于性能的问题。


喵喔喔
浏览 77回答 1
1回答

喵喵时光机

在集合上执行流命令链之前检查是否为空是否有意义?从性能的角度来看,这可能会有所帮助,因为它绝对可以防止空流花费(一点)CPU 时间而不执行任何操作。但从概念的角度来看:这不是一个好主意。流的全部要点是您不关心条目的数量。流(在很大程度上)是一种以“函数式编程”方式表达逻辑的方式。空流返回“空”结果。这就是它们的工作原理和使用方式。例如,如果您预先添加不同的检查,那么您的代码还需要提供该空结果。关于性能,您真正需要谨慎的事情是:大量流操作经常在少量元素上运行。
随时随地看视频慕课网APP

相关分类

Java
我要回答