Java基础之集合篇 (二)
2021-06-08 00:03
标签:快速 常量 hash 一个 try 含义 性能 jdk7 存放位置 一:Map接口实现类的结构: 二:Map结构的理解 三:HashMap的底层实现原理(重点!!!常考!!!以JDK7为例说明) HashMap无法按照添加的顺序遍历,即其底层的添加是无序的,是按照hash值来确定存放位置的。 注意版本之间的不同: JDK1.8 之所以会加入红黑树是因为当链表过长是会严重影响HashMap的性能,而红黑树具有快速增删改查的特点。 HashMap源码中的常量含义: 关于加载因子: 加载因子也叫作扩容因子,用来判断什么时候进行扩容,假设加载因子为0.75,HashMap的初始容量为16,当HashMap中有16 * 0.75 = 12个容量时,HashMap就会进行扩容。如果加载因子越大,扩容发生的频率就会比较低,占用空间比较小,但是发生hash冲突的几率会提升,对元素操作时间会增加,运行效率降低;如果加载因子太小,那么表中的数据将过于稀疏(很多空间还没用,就开始扩容了),对空间造成严重浪费;而且因为容量默认为2的次方,当加载因子为0.75时,容量和加载因子的乘积为整数。所以系统默认加载因子取了0.5 -1 之间的0.75. LinkedHashMap是HashMap的子类,其相较于HashMap的不同就在于它重新定义了Node节点,即声明了Entry类,不仅包含了Node节点中定义的变量,还在其中多加了before和after指针,用于查找上一个和下一个元素。这样使得LinkedHashMap能够按照添加的顺序进行遍历。 Java基础之集合篇 (二) 标签:快速 常量 hash 一个 try 含义 性能 jdk7 存放位置 原文地址:https://www.cnblogs.com/Melo-ccyfy/p/14545221.html