gpt4 book ai didi

java - 基于子类的哈希码?

转载 作者:行者123 更新时间:2023-12-01 22:35:37 25 4
gpt4 key购买 nike

可能是一个常见问题,我不确定 Java 是否有解决方案

假设我们有 A 类、B 类和 C 类。其中 B 和 C 扩展了 A。

我们有

Set<A>

A 有一个基于 A 属性的简单哈希码。我的问题是,当我将 B 和 C 添加到集合中时,B 和 C 可能具有与 A 相同的属性。

显然,B 具有一些 C 没有的属性,而 C 具有 B 没有的一些属性。问题是我无法将 B 和 C 添加到集合中,因为它们的哈希码(使用 A 的哈希码函数)将相同。由于某些原因(此处未解释)我不被允许从 A 组中删除任何内容。

我的问题实际上归结为,我们有 2 个对象 A,其中一个确实是 B。但是,就这个集合及其哈希码而言,它们是相同的。无论如何,我是否可以表达这两个 A,即使它们所有的 A 属性都相同,但实际上并不相同?

如果 A 的哈希码函数能够基于其底层子类的实际情况,那就太好了。这可能吗?无论如何,围绕我的问题?

最佳答案

同时重写 B 和 C 中的 hashCode 和 equals 方法。

这样,当散列来比较它们时,它将包括它们的属性,并向下委托(delegate)来比较 A 中的属性。

关于java - 基于子类的哈希码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26915318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com