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

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

應用比較器和謂詞的順序重要嗎?

應用比較器和謂詞的順序重要嗎?

眼眸繁星 2023-02-16 17:22:57
我們有一個網頁,用戶可以在其中選擇任意數量的規則來過濾和排序一組項目。對于每條規則,他都為其設置了優先級,用戶可以使用該優先級定義規則應如何應用的順序。從這組規則中,我提取 Comparator(如果規則正在排序)和/或 Predicates(如果用戶想要過濾項目)對象。我想將它們與一系列項目一起使用,以便對它們進行過濾和排序。我的問題是,應用 Comparator 和 Predicate 對象的順序重要嗎?我知道 Comparator 對象的順序很重要,但是 Predicate 出現在開頭還是結尾有關系嗎?例如:We have Comparator objects: comparator1, comparator2We have Predicate objects: predicate1, predicate2Is there a difference between applying them in the following orders:- comparator1, comparator2, predicate1, predicate2- predicate1, predicate2, comparator1, comparator2- predicate1, comparator1, predicate2, comparator2- predicate2, comparator1, comparator2, predicate1Note: comparator1 always appears before comparator2. I am aware that changing their order could result in different results in terms of sorting.現在,我認為上述所有情況都會導致相同的輸出(就排序和項目而言)。這將允許我先應用所有過濾器,然后再進行排序。但是我不確定,所以我不得不在這里問。
查看完整描述

2 回答

?
jeck貓

TA貢獻1909條經驗 獲得超7個贊

  1. 過濾在排序之前進行。

  2. 比較器的順序很重要。Comparator#thenComparing按照用戶指定的順序查看復合比較器。

  3. 謂詞的順序無關緊要(除非它們是有狀態的或依賴于其他謂詞,必須避免這種情況)。Predicate#and以任何順序查看復合謂詞。


查看完整回答
反對 回復 2023-02-16
?
catspeake

TA貢獻1111條經驗 獲得超0個贊

如果您的謂詞是無狀態的并且不修改它們測試的對象,那么它們是關系代數方面的選擇。因此,它們的順序對最終結果無關緊要。


但是,性能可能存在差異。通常建議首先應用快速和高度選擇性的謂詞。篩選后排序也會更快。


另一方面,根據您所做的事情,這些好處可能微不足道。在這種情況下,您應該選擇使您的代碼最容易理解和維護的順序。


查看完整回答
反對 回復 2023-02-16
  • 2 回答
  • 0 關注
  • 117 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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