我使用存儲 JSONObjects 的 Hashset。我知道 hashset 使用 hashCode() 和 equals 方法來確定對象是否重復(fù)。檢查后,我可以看到相同的 JSONObject 返回 2 個不同的 hascodes,即使 equals() 和 similar() 返回 true,這基本上意味著 JSONObject 沒有正確覆蓋 hashcode()。我知道如果我不使用像 Gson 或 Jackson 這樣的庫,我可能會解決這個問題,但我的代碼在使用 JSONObject 方面投入了大量資金,并將所有代碼重構(gòu)為使用其中一個庫將花費(fèi) 2 很多時間。我的問題 - 有沒有辦法設(shè)置決定重復(fù)的 hashSet 方式?就像是HashSet<JSONObject> hs = new HashSet();
hs.setDuplicateStrategy((o1, o2) => { o1.similar(o2)});歡迎任何其他解決方案
2 回答

HUH函數(shù)
TA貢獻(xiàn)1836條經(jīng)驗 獲得超4個贊
既然你不能延伸JSONObject
和HashSet
不支持可選擇散列提供商(如TreeSet
用比較一樣),簡單的解決辦法是把它包在沒有實(shí)現(xiàn)類hashCode()
和equals()
正常。
或者使用不同的Set
實(shí)現(xiàn)(例如TreeSet
)。
添加回答
舉報
0/150
提交
取消