Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.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 当hashcode()返回零时,对集合实现有什么影响_Java_Collections_Hashcode - Fatal编程技术网

Java 当hashcode()返回零时,对集合实现有什么影响

Java 当hashcode()返回零时,对集合实现有什么影响,java,collections,hashcode,Java,Collections,Hashcode,好的,仅就知识而言,如果对象的hashcode方法在demoClass中总是返回0,那么它对集合实现类(如hashmap、hashset等)有什么意义。我知道它与hashmap的putForNullKey或其他类的集合实现有关,但不知道太多细节。我知道对于空对象,hascode是0,因此它对0 hashcode有特定的方法 @Override public int hashCode() { return 0; } 这将使HashMap、HashSet和其他依赖hashCode的集合效率非常低

好的,仅就知识而言,如果
对象的
hashcode
方法在
demoClass
中总是返回
0
,那么它对集合实现类(如
hashmap
hashset
等)有什么意义。我知道它与hashmap的
putForNullKey
或其他类的集合实现有关,但不知道太多细节。我知道对于空对象,hascode是
0
,因此它对0 hashcode有特定的方法

@Override
public int hashCode() {
return 0;
} 

这将使
HashMap
HashSet
和其他依赖
hashCode
的集合效率非常低,因为所有元素/条目都将添加到同一个bin

诸如
get()
containsKey()
contains()
等方法将采用
O(n)
而不是
O(1)


顺便说一句,答案并不特定于0
hashCode
。任何常量
hashCode
的行为都会完全相同。

其他结构如
Set
?@BhargavModi I提到HashSet。并非所有Set实现都使用hashCode。