Java 有人能给我解释一下hashmap get(key)方法的代码吗?

Java 有人能给我解释一下hashmap get(key)方法的代码吗?,java,collections,hashmap,Java,Collections,Hashmap,在Java的get(objectkey)方法中,有一段代码我不理解 for (Entry<K,V> e = table[indexFor(hash, table.length)]; e != null; e = e.next) { Object k; if (e.hash == hash && ((k = e.key) == key || key.equals(

在Java的get(objectkey)方法中,有一段代码我不理解

for (Entry<K,V> e = table[indexFor(hash, table.length)];
              e != null;
              e = e.next) {
             Object k;
             if (e.hash == hash && ((k = e.key) == key || key.equals(k)))
                 return e.value;
         }
我知道get(key)方法是如何工作的,即使两个对象的hashcode是相同的

但是下面的代码我无法理解

for (Entry<K,V> e = table[indexFor(hash, table.length)];
              e != null;
              e = e.next) {
             Object k;
             if (e.hash == hash && ((k = e.key) == key || key.equals(k)))
                 return e.value;
         }
for(条目e=table[indexFor(hash,table.length)];
e!=null;
e=e.next){
对象k;
如果(e.hash==hash&((k=e.key)==key | | key.equals(k)))
返回e.value;
}
有人能解释一下吗。
谢谢

HashMap
可以与您一起使用。散列桶被安排为数组,
HashMap
类将其作为
调用。因此,for的
循环从保存
键的哈希桶的第一个元素开始

Entry<K,V> e = table[indexFor(hash, table.length)
Entry e=table[indexFor(hash,table.length)
这里的
散列
表示该存储桶的散列索引


for
循环将一直运行,直到bucket中有元素(
e!=null


for
循环将像
e=e.next
一样迭代,也就是说,移动到bucket中的下一个元素,直到找到匹配项为止


现在,一旦找到散列桶,该方法应该返回其键与传递的
键匹配的确切条目。现在,通过引用匹配
==
)或等于匹配
(k=e.key)==key | | key.equals(k)

如果发生匹配,则返回键,否则该方法将返回
null