摘要: 理想的状况,hashMap的存取就是O(1),也就是直接根据hashcode就可以找到它,每个bucket只存储一个节点,链表指向都是null,这样就比较开心了,不要出现一个链表很长的情况。 所以我们希望它能分布的均匀一点,如果让我们设计的话,我们肯定是直接对长度取模 hashcode % leng 阅读全文
posted @ 2019-11-24 17:46 gaopengpy 阅读(1089) 评论(0) 推荐(1) 编辑
摘要: HashMap的存取过程,当执行putVal的操作的时候, 1.首先检查大小,看是否需要扩容(默认元素超过最大值的0.75时扩容),如果需要扩容就进行扩容 2.然后计算出key的hashcode,根据hashcode定位数值所在的bucketIndex 3.如果该位置上没有元素,就直接插入,结束 4 阅读全文
posted @ 2019-11-24 17:43 gaopengpy 阅读(4353) 评论(0) 推荐(0) 编辑
摘要: HashMap的主干是一个Entry数组。Entry是HashMap的基本组成单元,每一个Entry包含一个key-value键值对。 JDK1.7中 HashMap是数组+链表的数据结构,JDK1.8中HashMap是数组+链表+红黑树的数据结构,JDK1.8的HashMap链表的长度超过8会转换 阅读全文
posted @ 2019-11-24 17:32 gaopengpy 阅读(1363) 评论(0) 推荐(1) 编辑