为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

红糖糍粑 2021-06-01 08:16:12
我使用存储 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 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

既然你不能延伸JSONObjectHashSet不支持可选择散列提供商(如TreeSet用比较一样),简单的解决办法是把它包在没有实现类hashCode()equals()正常。

或者使用不同的Set实现(例如TreeSet)。


查看完整回答
反对 回复 2021-06-02
  • 2 回答
  • 0 关注
  • 156 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信