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

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

比較Java中的兩組對象

比較Java中的兩組對象

躍然一笑 2022-07-20 16:47:12
我有兩個排序集:sortedSet1(Object ,Object1 , Object2 , Object3 , Object4 )和sortedSet2(Object ,Object1 , Object2 , Object3 , Object4 )。這些對象還有其他包含對象的列表。我想從內到外比較每個值并捕捉 2 個 sortedSet 之間的任何差異。我不想要確切的區別。我想看看是否有任何變化。我已經嘗試過sortedSet1.equals(sortedSet2),但它死了不起作用,如果我在 sortedSet 內更改另一個對象內的值,它不會發現差異。我也試過if (!sortedSet1.containsAll(sortedSet2)) {    // do something } 沒有運氣..我認為答案存在于流中,但我對它們的經驗很少..非常感謝您的幫助。
查看完整描述

1 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

如果我在 sortedSet 內更改另一個對象內的值,它不會發現差異


首先要找到差異是這樣的:


SortedSet<Object> common = new TreeSet<>(sortedSet1);

common.retainAll(sortedSet2);

SortedSet<Object> all = new TreeSet<>(sortedSet1);

all.addAll(sortedSet2);

SortedSet<Object> differences = new TreeSet<>(all);

differences.removeAll(common);

但是,您提到一旦在集合中更改對象,就會敲響警鐘。


永遠不應該更改一個值,以使其使用的鍵(hashCode 或此處為 Comparable)發生更改。如此一來,排序和結構位置就被破壞了。對于樹結構,樹的某些部分變得不可訪問,因為假定左子樹小于節點的鍵,而右子樹的節點應該大于節點的鍵。


查看完整回答
反對 回復 2022-07-20
  • 1 回答
  • 0 關注
  • 98 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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