Java中HashMap中的重置

Java中HashMap中的重置,java,hashmap,Java,Hashmap,我对HashMap中的重新灰化的概念有点怀疑 假设我有一个大小为8的HashMap,在其中,索引7处有一个对象(E1)。因此,当我们放置多个元素时,强制HashMap增加其内部数组大小,这将导致重新灰化 所以我的问题是,在重新灰化之后,我的对象(E1)会被放置在第7个索引中,还是会得到一个不同的桶 感谢有用的响应和引用。您的密钥所在的存储桶是其hashCode模数的函数用于保存HashMap的数组大小(即存储桶的数量),因此重新散列可以将密钥移动到不同的存储桶。显示每个新存储桶将被重新索引到一个

我对
HashMap
中的重新灰化的概念有点怀疑

假设我有一个大小为8的
HashMap
,在其中,索引7处有一个对象(E1)。因此,当我们放置多个元素时,强制HashMap增加其内部数组大小,这将导致重新灰化

所以我的问题是,在重新灰化之后,我的对象(E1)会被放置在第7个索引中,还是会得到一个不同的桶


感谢有用的响应和引用。

您的密钥所在的存储桶是其
hashCode
模数的函数用于保存HashMap的数组大小(即存储桶的数量),因此重新散列可以将密钥移动到不同的存储桶。

显示每个新存储桶将被重新索引到一个存储桶(可能)新表中的不同索引:

 void More ...transfer(Entry[] newTable) {
489         Entry[] src = table;
490         int newCapacity = newTable.length;
491         for (int j = 0; j < src.length; j++) {
492             Entry<K,V> e = src[j];
493             if (e != null) {
494                 src[j] = null;
495                 do {
496                     Entry<K,V> next = e.next;
497                     int i = indexFor(e.hash, newCapacity); // <-- new index is calculated here
498                     e.next = newTable[i];
499                     newTable[i] = e; // <-- and assigned
500                     e = next;
501                 } while (e != null);
502             }
503         }
504     }
void More…传输(条目[]新表){
489条目[]src=表格;
490 int newCapacity=newTable.length;
491表示(int j=0;j497 int i=indexFor(e.hash,newCapacity);//它将被放置在不同的索引中。我发布答案是为了强调一点,即术语重新散列不能正确表示操作。它应该是重新索引


不幸的是,他也使用了同样的术语,称之为“重新洗牌”。但它描述了重建内部数据结构(数组)的过程。
。这个数组被他们称为哈希表,我认为这就是为什么新创建的哈希表被称为重新哈希表的原因。

想知道:你为什么在意?换句话说:这些信息在哪方面相关?(并不是说这是一个糟糕的问题;我只是想知道它的实际相关性)它将放在另一个存储桶中(除非,碰巧,新的计算存储桶又是第七个存储桶)。为什么不阅读源代码呢?它与JDK一起提供。@Jägermeister:只是为了curosity:)@JBNizet:明白了:)…谢谢你的回答谢谢你的回答:)谢谢你的回答:)