码迷,mamicode.com
首页 > 其他好文 > 详细

谈谈你对集合的理解

时间:2020-01-15 12:04:57      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:有序   zed   引入   hash冲突   expand   接口   list   结构   方式   

  1. 集合有一个顶级类Collection接口,list和set继承这个接口,map是kv键值对的结构,

  2. list是单例数据的集合,存储的元素是有序且可重复的,主要的实现类由ArrayList、Vector和LinkedList,ArrayList的初始容量为10,它访问任意位置效率高,但是插入和删除数据时需要移动元素所有效率低,是线程非安全的,Vector是线程安全的,使用了synchoronized方法,所有性能比ArrayList差,LinkedList:使用的是双向链表存储数据,需要按照索引向前或者向后遍历,它插入数据时只需要记录本项的前后项即可,所有插入或者删除效率高,占用的内存相对较多,

  3. set元素是无序放入的,元素不可重复,并且只能通过迭代器来获取所有元素,主要的实现类由HashSet,HashSet基于HashMap实现

  4. 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性能低的缺失

  5. 还有一个集合的工具类Collentions,它包含了各种集合操作的静态方法

谈谈你对集合的理解

标签:有序   zed   引入   hash冲突   expand   接口   list   结构   方式   

原文地址:https://www.cnblogs.com/Web-spring/p/12195740.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!