Java 不同类的哈希代码冲突
我在一个整数字段周围有两个简单的包装器类,其中我必须重写equals()和hashCode()。最后,它们都对hashCode()使用相同的算法,因此如果整数字段相同,则哈希代码会发生冲突 因为对象是不同类型的,所以这很重要,还是我应该只关心是否希望将它们作为键混合在同一个HashMap中?Java 不同类的哈希代码冲突,java,Java,我在一个整数字段周围有两个简单的包装器类,其中我必须重写equals()和hashCode()。最后,它们都对hashCode()使用相同的算法,因此如果整数字段相同,则哈希代码会发生冲突 因为对象是不同类型的,所以这很重要,还是我应该只关心是否希望将它们作为键混合在同一个HashMap中?hashCode()两个对象相等表示“这些对象可能相等,请通过调用equals()仔细查看”。只要这些类的equals()方法正确,哈希代码相同就不是问题 hashCode()的一般规则是,如果两个对象相等,
hashCode()
两个对象相等表示“这些对象可能相等,请通过调用equals()
仔细查看”。只要这些类的equals()
方法正确,哈希代码相同就不是问题
hashCode()
的一般规则是,如果两个对象相等,那么它们的哈希代码也应该相等。请注意,规则不是“如果两个对象具有相同的哈希代码,那么它们应该相等。”如果可能有一个哈希映射,其中两种类型的对象具有相同的值,那么这显然将是一个潜在的性能问题HashMap
等不会查看实际的运行时类,事实上,没有标准的方法来判断不同类的两个对象是否可以相等(例如,List
s以相同的顺序使用由ArrayList
和Arrays生成的相同值。asList
应该比较相等)。对于HashMap
,我猜命中率不会太高,但对于探测实现来说可能更差,因为在第一次检查时命中率会有很大提高