![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
集合
文章平均质量分 76
愧序深巷
这个作者很懒,什么都没留下…
展开
-
hashmap面试题总结
主要是为了提升在 hash 冲突严重时(链表过长)的查找性能,使用链表的查找性能是 O(n),而使用红黑树是 O(logn)。对于插入,默认情况下是使用链表节点。当同一个索引位置的节点在新增后达到9个(阈值8):如果此时数组长度大于等于 64,则会触发链表节点转红黑树节点;而如果数组长度小于64,则不会触发链表转红黑树,而是会进行扩容,因为此时的数据量还比较小。对于移除,当同一个索引位置的节点在移除后达到== 6 个,并且该索引位置的节点为红黑树节点,会触发红黑树节点转链表节点==阈值为8是在时间和空间上原创 2022-06-06 15:56:27 · 133 阅读 · 0 评论 -
Map接口总结与HashMap源码分析
Map接口1.Map,用于保存K-V(双列元素)2.Map中的Key Value可以是任意引用分类型的数据,会封装到HashMap的Node对象中3.Map的key不允许重复。原因和HashSet一样。4.Map中的value可以重复5.Map的key可以为null,value也可以为null。6.常用String类作为Map的key7.key value一对一,通过指定的key可以得到value8.Map存放数据的key-value示意图,一对k-v是放在HashMap$Node中的,因为原创 2022-04-22 12:13:09 · 585 阅读 · 2 评论 -
HashSet源码分析
HashSet的全面说明1.实现了Set接口2.实际上是一个HashMap,源码3.可以存放null,只能有一个4.不保证元素是有序的(取出顺序固定 ),取出hash后,在确定索引的结果5.不能有重复对象模拟底层存储结构(数组+链表)基础使用public class HashSet01 { public static void main(String[] args) { HashSet<Object> set = new HashSet<&原创 2022-04-21 15:22:40 · 831 阅读 · 0 评论 -
LinkedList Vector基本源码分析
Vector底层是对象数组线程同步,线程安全无参构造,默认为10,满了后,按照2倍扩容指定大小,满了后,直接按照两倍扩容1.无参构造的时候:这里看到,无参构造默认空间为102.执行add方法的时候这里说一下:synchronized是保证线程安全的ensureCapacityHelper:这个方法判断是不是要扩容;第一次执行的时候minCapacity=1;(0+1)3.我们看一下这个方法的源码:elementData.length为10.(无参构造,默认为10)1<原创 2022-04-20 17:01:05 · 561 阅读 · 0 评论 -
ArrayList源码分析
ArrayList底层和源码分析先说结论:1.ArraryList中维护了一个Object类型的数组elementData transient Object[] elementData;2.创建对象的时候如果是无参构造,初始容量为0,第一次添加的时候,扩容为10,如果需要扩容 1.5倍3.如果是指定大小的构造器,初始容量为指定的大小。如果需要扩容,直接扩容大小为1.5倍public class ArrayListSourre { public static void main(String原创 2022-04-19 21:02:56 · 209 阅读 · 0 评论