java – HashMap在内部使用LinkedList

public V get(Object key) {
if (key == null)
    return getForNullKey();
    int hash = hash(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;
    }
    return null;
}

我所知道的是,如果要从HashMap获取一个对象,首先它将根据哈希码/哈希值搜索哈希值,然后遍历该哈希表中的LinkedList(假设diff对象具有相同的哈希码,因此在相同的哈希桶).

但是,在查看上面的代码之后,我无法理解它何时遍历LinekedList(和LinkedList在哪里)

桶是有效的链表.表数组是Entry元素的数组,每个Entry是一个链表,每个条目都知道列表中的下一个,直到下一个引用为null时到达结束.您显示的for循环遍历链表.

它不是像java.util.LinkedList中的LinkedList一样,它是一个单独的(更简单的)实现,仅用于地图.

相关文章
相关标签/搜索