HashMap(JDK1.9)详解

一、HashMap的概念。

   1、HashMap类的继承实现关系如下:因此HashMap的功能有:可序列化、可克隆等功能。

  2、HashMap的数据结构:数组+链表+红黑树。

  3、键值对的存储方案:第一,无冲突时,则存储在数组;第二,有冲突时,且链表长度小于8,则存放在单链表;第三,有冲突时,且链表长度大于8,则存放在红黑树。

二、HashMap中的内部类。

  1、数组元素和单链表节点的数据类型是Node类,而红黑树的节点类是TreeNode类。

三、HashMap中的成员变量。

  1、容量(capacity),代表该HashMap的数组大小。DEFAULT_INITIAL_CAPACITY表示数组的默认容量,值为16;MAXIMUM_CAPACITY表示容量最大值,值为2的30次方。

  2、加载因子(loadFactor),表示数组的使用率。loadFactor表示实际的加载因子;DEFAULT_LOAD_FACTOR表示默认加载因子,值为0.75。

  3、扩容阀值(threshold),表示当哈希表的大小大于该扩容阀值时,就会进行扩容,即调用resize方法。扩容阀值 = 实际容量 × 实际加载因子。

  4、键值对数量(size),表示实际存储的键值对大小。

  5、哈希表(table),代表实际存储的数组。最重要了。

  6、树化阀值(TREEIFY_THRESHOLD),表示桶的树化阀值,大小为8,即单链表转换成红黑树的阀值。当单链表长度大于该值8时才会转换。

  7、链表还原阀值(UNTREEIFY_THRESHOLD),表示

猜你喜欢

转载自www.cnblogs.com/igoodful/p/8906439.html