Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 不同类的哈希代码冲突_Java - Fatal编程技术网

Java 不同类的哈希代码冲突

Java 不同类的哈希代码冲突,java,Java,我在一个整数字段周围有两个简单的包装器类,其中我必须重写equals()和hashCode()。最后,它们都对hashCode()使用相同的算法,因此如果整数字段相同,则哈希代码会发生冲突 因为对象是不同类型的,所以这很重要,还是我应该只关心是否希望将它们作为键混合在同一个HashMap中?hashCode()两个对象相等表示“这些对象可能相等,请通过调用equals()仔细查看”。只要这些类的equals()方法正确,哈希代码相同就不是问题 hashCode()的一般规则是,如果两个对象相等,

我在一个整数字段周围有两个简单的包装器类,其中我必须重写equals()和hashCode()。最后,它们都对hashCode()使用相同的算法,因此如果整数字段相同,则哈希代码会发生冲突

因为对象是不同类型的,所以这很重要,还是我应该只关心是否希望将它们作为键混合在同一个HashMap中?

hashCode()
两个对象相等表示“这些对象可能相等,请通过调用
equals()
仔细查看”。只要这些类的
equals()
方法正确,哈希代码相同就不是问题


hashCode()
的一般规则是,如果两个对象相等,那么它们的哈希代码也应该相等。请注意,规则不是“如果两个对象具有相同的哈希代码,那么它们应该相等。”

如果可能有一个哈希映射,其中两种类型的对象具有相同的值,那么这显然将是一个潜在的性能问题
HashMap
等不会查看实际的运行时类,事实上,没有标准的方法来判断不同类的两个对象是否可以相等(例如,
List
s以相同的顺序使用由
ArrayList
Arrays生成的相同值。asList
应该比较相等)。对于
HashMap
,我猜命中率不会太高,但对于探测实现来说可能更差,因为在第一次检查时命中率会有很大提高