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 時間而不執行任何操作。
但從概念的角度來看:這不是一個好主意。流的全部要點是您不關心條目的數量。流(在很大程度上)是一種以“函數式編程”方式表達邏輯的方式??樟鞣祷亍翱铡苯Y果。這就是它們的工作原理和使用方式。
例如,如果您預先添加不同的檢查,那么您的代碼還需要提供該空結果。
關于性能,您真正需要謹慎的事情是:大量流操作經常在少量元素上運行。
添加回答
舉報
0/150
提交
取消