Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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 如果哈希代码大于映射大小,hashmap如何查找bucket?_Java_Dictionary_Collections - Fatal编程技术网

Java 如果哈希代码大于映射大小,hashmap如何查找bucket?

Java 如果哈希代码大于映射大小,hashmap如何查找bucket?,java,dictionary,collections,Java,Dictionary,Collections,我创建了一个hashmap,所以默认大小为16。我跳过了equals和hashcode方法。我从hashcode方法返回20。现在我们在map中有了bucket 0-15,但是hashcode值是20,那么插入这个键将使用哪个bucket?HashMap不直接使用hashcode方法返回的值。它使用它们进行某种模运算,使用它自己的哈希方法,这种方法遵循一些很好的数学性质。完全正确的是HashMap不使用%。。。hashCodes可以是负数,负模块是负数结果-查找负bucket int[] arr

我创建了一个hashmap,所以默认大小为16。我跳过了equals和hashcode方法。我从hashcode方法返回20。现在我们在map中有了bucket 0-15,但是hashcode值是20,那么插入这个键将使用哪个bucket?

HashMap不直接使用
hashcode
方法返回的值。它使用它们进行某种模运算,使用它自己的哈希方法,这种方法遵循一些很好的数学性质。完全正确的是
HashMap
不使用
%
。。。hashCodes可以是负数,负模块是负数结果-查找负bucket
int[] arr = new int[10];
int i = Math.abs(hash % arr.size); // this always in this array