亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java8 unordered() 無序化無效

Java8 unordered() 無序化無效

MYYA 2019-02-05 20:08:03
Java8 unordered()無序化無效, 多次運行結果還是與流中元素順序一致// 多次運行結果: 5, 1, 2, 6, 3, 7, 4 沒有達到無序的效果Stream.of(5, 1, 2, 6, 3, 7, 4).unordered().forEach(System.out::println);求大神指教相關代碼     /**      * S unordered(); 產生一個與當前流中元素相同的無序流, 當流本身就是無序或流已經無序, 會返回流本身      */     @Test     public void unorderedTest() {         Stream.of(5, 1, 2, 6, 3, 7, 4).forEach(System.out::println);                 // 多次運行結果: 5, 1, 2, 6, 3, 7, 4 沒有達到無序的效果 TODO         Stream.of(5, 1, 2, 6, 3, 7, 4).unordered().forEach(System.out::println);     }
查看完整描述

1 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

unordered()操作不會執行任何操作來顯式地對流進行排序。它的作用是消除了流必須保持有序的約束,從而允許后續操作使用不必考慮排序的優化。

您可以在Java 8文檔中閱讀此內容:

對于順序流,順序的存在與否不會影響性能,只影響確定性。如果流是順序的,則在相同的源上重復執行相同的流管道將產生相同的結果;
如果是非順序流,重復執行可能會產生不同的結果。 對于并行流,放寬排序約束有時可以實現更高效的執行。 ...

在流有序時, 但用戶不特別關心該順序的情況下,使用 unordered 明確地對流進行去除有序約束可以改善某些有狀態或終端操作的并行性能。

可以比較下面的結果

   Stream.of(5, 1, 2, 6, 3, 7, 4).unordered().forEach(System.out::println);   Stream.of(5, 1, 2, 6, 3, 7, 4).unordered().parallel().forEach(System.out::println);


查看完整回答
反對 回復 2019-02-05
  • 1 回答
  • 0 關注
  • 458 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號