Java 有人能给我解释一下hashmap get(key)方法的代码吗?
在Java的get(objectkey)方法中,有一段代码我不理解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(
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