我使用存储 JSONObjects 的 Hashset。我知道 hashset 使用 hashCode() 和 equals 方法来确定对象是否重复。检查后,我可以看到相同的 JSONObject 返回 2 个不同的 hascodes,即使 equals() 和 similar() 返回 true,这基本上意味着 JSONObject 没有正确覆盖 hashcode()。我知道如果我不使用像 Gson 或 Jackson 这样的库,我可能会解决这个问题,但我的代码在使用 JSONObject 方面投入了大量资金,并将所有代码重构为使用其中一个库将花费 2 很多时间。我的问题 - 有没有办法设置决定重复的 hashSet 方式?就像是HashSet<JSONObject> hs = new HashSet();
hs.setDuplicateStrategy((o1, o2) => { o1.similar(o2)});欢迎任何其他解决方案
2 回答
![?](http://img1.sycdn.imooc.com/5458626a0001503602200220-100-100.jpg)
HUH函数
TA贡献1836条经验 获得超4个赞
既然你不能延伸JSONObject
和HashSet
不支持可选择散列提供商(如TreeSet
用比较一样),简单的解决办法是把它包在没有实现类hashCode()
和equals()
正常。
或者使用不同的Set
实现(例如TreeSet
)。
添加回答
举报
0/150
提交
取消