类似类的Java哈希代码

类似类的Java哈希代码,java,hashcode,Java,Hashcode,我有两个类似的类,每个类都有一个相同类型的字段 class Fruit { private final String name; } class Vegetable { private final String name; } 我想为每个应用程序实现hashCode()。我的问题是,在我的例子中,名字之间的冲突比“苹果”和“胡萝卜”更可能发生,而且它们可能在同一个地图/集合中。我想知道实现hashCode来处理这个问题的最清晰的方法是什么 到目前为止,我考虑了Objects.

我有两个类似的类,每个类都有一个相同类型的字段

class Fruit {
    private final String name;
}

class Vegetable {
    private final String name;
}
我想为每个应用程序实现
hashCode()
。我的问题是,在我的例子中,名字之间的冲突比“苹果”和“胡萝卜”更可能发生,而且它们可能在同一个地图/集合中。我想知道实现hashCode来处理这个问题的最清晰的方法是什么


到目前为止,我考虑了
Objects.hash(this.getClass(),name)
Objects.hash(,name)
。我喜欢第一种,只是因为它比第二种更具自我记录性和健壮性,但这不是我在野外见过的模式。我还考虑了
*对象。hashCode(name)
,但这感觉很脆弱,尤其是如果添加了新字段。

您担心散列冲突有什么原因吗?为了澄清这一点,您使用了类似于
散列集
散列映射
(依赖于
散列码
)的东西包含这两种类型的对象?具有相同哈希代码的对象可以位于同一集合/映射中。set/map对具有相同哈希代码的对象使用equals来确定它是否是相同的对象
hashCode
用于确定对象是否不相等(具有不同哈希代码的对象不相等;具有相同哈希代码的对象可能相等)
equals
用于确定它们是否相等。只有当水果和蔬菜的名称相同时,才会发生冲突。你能举一个你想解决的问题的例子吗?