java集合
文章平均质量分 79
xzystart
这个作者很懒,什么都没留下…
展开
-
ConcurrentHashMap 1.7&1.8异同分析简介及部分源码分析
ConcurrentHashMap 1.7概述特点是线程安全的 。采用分段锁的形式加锁,对每个**Segment**进行加锁保证局部线程安全从而保证全局线程安全由于是对每个**Segmeng**进行加锁,所以并发数受到**Segmeng**数组长度影响**Segmeng**数组不可扩容,**Segmeng**内部可扩容**Segment**内部采用数组加链表进行存储(可近似的看成一个无红黑树的**HashMap**,不过他是线程安全的)存储结构整个 ConcurrentHashMa原创 2022-01-23 18:12:36 · 615 阅读 · 0 评论 -
LinkedHashMap简介及部分源码分析
概述LinkedHashMap实现了Map接口,即允许放入key为null的元素,也允许插入value为null的元素。从名字上可以看出该容器是LinkedList和HashMap的混合体,也就是说它同时满足HashMap和LinkedList的某些特性。可将LinkedHashMap看作采用LinkedList增强的HashMap。特点LinkedHashMap LinkedHashMap 继承自 HashMap,所以它的底层仍然是基于拉链式散列结构即由数组和链表或红黑树组成LinkedHas原创 2022-01-23 18:08:06 · 310 阅读 · 0 评论 -
HashMap简介及部分源码分析
简介HashMap简介HashMap是基于哈希表的Map接口的一个实现,用于键值对存储,由于实现了Map接口,所以HashMap允许使用null作为键和值,与其他普通键值使用相同,即null能作为多个键的值,但是只能作为一个键.HashMap默认初始化容量为16,之后会进行扩充,每次扩容长度为之前长度的2倍,(HashMap的大小为2的幂次方)HashMap默认参数// 默认容量16static final int DEFAULT_INITIAL_CAPACITY = 1 <<原创 2022-01-23 17:54:09 · 162 阅读 · 0 评论 -
Vetcor简介及部分源码分析
简介Vetcor与ArrayList相似,其内部都是通过一个容量能够动态增长的数组来实现的。不同点是Vector是线程安全的。因为其内部有很多同步代码快来保证线程安全.JDK中原文有一句注释Vector is synchronized. If a thread-safe implementation is not needed, it is recommended to use ArrayList in place of Vector意为“Vector 是同步的。如果不需要线程安全的实现,推荐使原创 2022-01-23 17:41:32 · 270 阅读 · 0 评论 -
ArrayList简介及部分源码分析
1.ArrayList介绍ArrayList的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加 ArrayList实例的容量。这可以减少递增式再分配的数量。ArrayList继承了AbstractList,实现了 List, RandomAccess, Cloneable, java**.**io**.**Serializable接口这些接口。特点Object[] 数组实现,默认大小为 1原创 2022-01-23 17:28:56 · 348 阅读 · 0 评论 -
HashSet简介及源码分析
简介HashSet继承AbstractSet类,实现Set、Cloneable、Serializable接口。其中AbstractSet提供 Set接口的骨干实现,从而最大限度地减少了实现此接口所需的工作。Set接口是一种不包括重复元素的Collection,它维持它自己的内部排序,所以随机访问没有任何意义。hashSet实现了Set,但底层实际却是一个HashMap,实现方法也是对底层HashMap的调用特点HashSet 基于 HashMap 实现,使用了 HashMap 的 K 作为元素存原创 2022-01-23 17:33:01 · 592 阅读 · 0 评论 -
LinkedList简介及部分源码分析
概述_LinkedList_同时实现了_List_接口和_Deque_接口,也就是说它既可以看作一个顺序容器,又可以看作一个队列,,同时又可以看作一个栈. 所以当需要使用队列或是栈结构时,可以考虑使用LinkedList.LinkedList的实现方式决定了所有跟下标相关的操作都是线性时间,而在首段或者末尾操作则是常数时间.由于LinkedList没有实现同步,所以直接使用多线程访问可能造成线程不安全问题,解决方法为,在定义LinkedList是使用Collections.synchronizedLi原创 2022-01-23 17:31:48 · 147 阅读 · 0 评论