java 基础

1、hashMap 原理 是一个key value 的存储结构。把key 经过hash算法行程一个索引,在理想的过程中,行程的key是惟一的,但是不理想的状况,就会出现相同的索引,也就是hash碰撞。

解决hash冲突

JDK1.7的时候,用链表+数组 

JDK1.8引入了红黑树 当链表的长度大于等于8,会先判断数组如果大于64会转化为红黑树,小于的话,会先扩容。

 

put的时候, key 和value 转换为entryset,。 把key做hash计算,出hashcode  。作为index,  存到数组中, 存的时候, 当hashcode重复的时候,会把后面的用链表的插入到前面的一个后面,也就是链表

当key一致的时候,直接替换value值。

往出取的时候,hashcode一致的时候,遍历链表。 

 

数组的扩容原理: 1.7  把数组进行扩容, 先生成新的数组, 把来位置的元素,转移到新的数组  。 添加元素的时候去判断,要不要去扩容 ,  容量是之前的两倍。 在链表上算新数组的小标是如何的。

1.8  对红黑树的转移, 树上的每个节点,在新的树的节点如何转移。 

 

posted @ 2023-05-22 15:59  随波逐流丶  阅读(15)  评论(0)    收藏  举报