源码之HashMap构造函数底层分析

2021-03-04  本文已影响0人  czczccz

基于 1.8

HashMap在JDK1.8之前是由数组加链表组成的,其中数组是主体,链表则是为了解决哈希冲突存在的。

1.8之后HashMap的组成多了红黑树,当链表的长度超过8的时候,就会把链表转换成红黑树。加快了索引速度。

00 :构造函数

还从构造函数先看起,HashMap总共提供给我们了四个构造函数,分别为:

public HashMap(int initialCapacity, float loadFactor) {...}
public HashMap(int initialCapacity) {...}
public HashMap() {...}
public HashMap(Map<? extends K, ? extends V> m) {

先看无参构造

构造函数我们看完了,主要就是容量、加载因子、临界值的设定。那到底是谁存储的的元素,谁设置的默认容量呢,如下是其他相关的变量定义。

    /**
     * The default initial capacity - MUST be a power of two.
     */
    static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16
    //存放元素的数组
    transient Node<K,V>[] table;
    //存放具体元素
    transient Set<Map.Entry<K,V>> entrySet;

构造函数中还出现了重要的方法resize,我们到扩容的时候再解析。

上一篇 下一篇

猜你喜欢

热点阅读