微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

需要为 Java 中 TreeSet/TreeMap 中的自定义对象覆盖 hashCode() 和 equals()

如何解决需要为 Java 中 TreeSet/TreeMap 中的自定义对象覆盖 hashCode() 和 equals()

有人可以帮助理解为什么我们在 Java 中处理 TreeSet 或 TreeMap 中的自定义对象时需要覆盖 hashCode() 和 equals() 吗?根据下面链接的 Javadocs,我看到 TreeSet 使用 compareto() 对数据进行排序。那么,为什么仅覆盖 compareto() 不足以在 TreeSet 或 TreeMap 中实现我的自定义排序功能

如果它是可选的,我们应该肯定这样做的用例是什么?

Javadoc 参考:https://docs.oracle.com/javase/7/docs/api/java/util/TreeSet.html

Set 接口是根据 equals 操作定义的,但是 TreeSet 实例使用它的 compareto(或 compare)方法执行所有元素比较,因此从 set 的角度来看,被此方法视为相等的两个元素是,相等。

一个 Stackoverflow 帖子中的一个被接受的答案作为参考,它也这样做:How can I use a custom class in a TreeSet?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。