谈谈你对集合的理解
Posted web-spring
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了谈谈你对集合的理解相关的知识,希望对你有一定的参考价值。
-
-
list是单例数据的集合,存储的元素是有序且可重复的,主要的实现类由ArrayList、Vector和LinkedList,ArrayList的初始容量为10,它访问任意位置效率高,但是插入和删除数据时需要移动元素所有效率低,是线程非安全的,Vector是线程安全的,使用了synchoronized方法,所有性能比ArrayList差,LinkedList:使用的是双向链表存储数据,需要按照索引向前或者向后遍历,它插入数据时只需要记录本项的前后项即可,所有插入或者删除效率高,占用的内存相对较多,
-
set元素是无序放入的,元素不可重复,并且只能通过迭代器来获取所有元素,主要的实现类由HashSet,HashSet基于HashMap实现
-
Map是键值对结构,存储是无序的,主要的实现类由Hashmap和HashTable,HashMap初始容量为16,0.75的加载 因子,key不能重复,允许有一个null值,value没有要求,当建hash冲突时采用链地址法解决也就是数组加链表的方式,在jdk1.7之前,链表无论多长都是链表,链表长度过长会导致性能下降,在jdk1.8之后引入了红黑树,在链表长度超过8之后,自动转换为红黑树,小于6之后转换为链表,hashMap是线程非安全的,HashTable是线程安全的,基于Synchronized实现,但是效率低,在jdk1.5之后引入了ConcurrenthashMap,基于分段锁实现的,弥补了HashMap线程非安全,HashTabl性能低的缺失
-
以上是关于谈谈你对集合的理解的主要内容,如果未能解决你的问题,请参考以下文章