3 回答

TA貢獻1865條經驗 獲得超7個贊
看來,您將布爾值收集到列表中的唯一原因是,您可以檢查某些布爾值是否是:false
如果我選擇減少或任何匹配,我不必從地圖操作中收集結果 [...]如果至少有一個假的,我只想返回假的。
如果是這種情況,那么您絕對應該考慮直接的基于流的方法:
return jobs.stream().allMatch(Job::ready);

TA貢獻1943條經驗 獲得超7個贊
你問利弊。 是最快和最簡單的。 是這里最麻煩/最復雜的。但是你的任務很簡單,所以這真的重要嗎?也許選擇使用哪種方法的更好關鍵是:“哪一種更好可讀,更易于理解和可維護?在實際的軟件開發(fā)中,這種干凈的代碼方法通常比在運行時中搜尋微秒或源代碼中的行數(shù)更重要。但話又說回來,我會說這里是最好的。Contains
Reduce
contains
System.out.println(!results.contains(false));
那么你實際上和你一樣,我肯定會更喜歡它來完成這個具體任務。但同樣,真正的差異非常小,我更關心的是該軟件的未來維護者的可讀性和可理解性。anyMatch(a -> !a)
contains
reduce

TA貢獻2003條經驗 獲得超2個贊
System.out.println(results.stream().reduce((a, b) -> a && b).get());
這將始終返回 false,因為 list() 至少有 1 個 。results
false
&&將始終檢查兩個值是否為 true,以將其傳遞為 。true
System.out.println(!results.stream().anyMatch(a -> !a));
Stream 返回此流(結果)的任何元素是否與提供的謂詞匹配。當你這樣做的時候,結果在最初為真之后最終會是假的。anyMatch(Predicate predicate)
(a -> !a)
!results
添加回答
舉報