【发布时间】:2021-07-06 17:37:13
【问题描述】:
我理解重写 equals() 方法和 hashCode() 方法的目的。但是我的问题是我们可以在像 ArrayList 这样的非哈希集合中覆盖哈希码和等于吗?
【问题讨论】:
-
我认为你可以,但这样做没有意义
-
你能举一个更具体的例子来说明你正在尝试做什么吗?您不能覆盖已经存在的类中的方法......但是如果需要,您可以创建自己的集合类并覆盖 hashCode 和 equals。通常集合类对它们的 elements 如何覆盖 hashCode 和 equals 更感兴趣。请澄清问题。
-
您可以为您创建的任何类覆盖
equals()和getHashCode()。当您覆盖它们时,它们可以安全地用作哈希映射中的键。重写这些方法只是提供一种方法来区分该类型的两个对象。 -
@LeiYang:这样做绝对是有意义的——例如,知道一组是否等价于另一组是非常有用的。但目前尚不清楚 OP 到底在问什么……至少对我来说不是。
-
@LeiYang:没有什么可以说必须使用哈希码来实现集合。这样做很常见,但不是基本要求。
标签: java