最简单说明Java HashMap底层数据结构实现

2022-04-11  本文已影响0人  小智在不在

本文只谈数据结构,先说结论:

HashMap数据结构-数组+单链表.png HashMap数据结构-数组+红黑树.png

明确这两点我们再来讨论具体实现细节,首先我们来看看散列链表 这个结构中的数组 部分,切入点在java.util.HashMap#put()java.util.HashMap#putVal()java.util.HashMap#resize()的方法调用链中,着重看java.util.HashMap#resize()方法,梗概如下:

final Node<K,V>[] resize() {
        ......
        //重点代码在这里,直接new了一个数组赋值给table,这个table就是我们散列链表中的数组部分
        @SuppressWarnings({"rawtypes","unchecked"})
        Node<K,V>[] newTab = (Node<K,V>[])new Node[newCap];
        table = newTab;
        ......
        return newTab;
    }

其次是链表/红黑树结构,切入点代码为java.util.HashMap#put()java.util.HashMap#putVal()

上一篇 下一篇

猜你喜欢

热点阅读