我可以覆盖 Hashsets 确定重复的方式吗?

我使用存储 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)});

欢迎任何其他解决方案


红糖糍粑
浏览 157回答 2
2回答

HUH函数

既然你不能延伸JSONObject和HashSet不支持可选择散列提供商(如TreeSet用比较一样),简单的解决办法是把它包在没有实现类hashCode()和equals()正常。或者使用不同的Set实现(例如TreeSet)。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java