Collection(单列集合):List 有序 可重复 :vector 数组结构 线程安全 加了锁
:Arraylist 数组结构 不安全 未加锁
:LinkedList 链表结构(双向链表) 不安全
:Set 无序 唯一 :HashSet 哈希表结构 ——(实现类)——LinkHashSet(哈希表和链表结构)
:TreeSet 红黑树结构
Map(双列集合):HashTable 哈希表结构 线程安全 (官方不推荐使用)————Properties
:HashMap 哈希表结构 不安全————LinkHashMap
:ConcurrentHashMap 哈希表结构
:TreeMap 红黑树结构
复杂度:常对幂指阶
ArrayList实现底层原理:1由动态的数组实现的
2初始容量为0,第一次添加数据时初始化容量为0
3扩容时变为原来的1.5倍,每次扩容都要拷贝数组
4添加数据时 确保已使用长度+1后足够存下一个数据 如果大于当前数组长度,调用grow方法扩容,确保有地方存储后添加新元素,最后返回bool值成功
ArralList list = new ArrayList(10) 扩容了几次 :0,构造函数直接初始化,没有扩容
数组和List之间的转换:数组转List,使用Arrays工具类中的asList方法
List转数组,使用List的toArray方法,需要参数List的长度
标签:扩容,java,数组,List,链表,哈希,集合,结构 From: https://www.cnblogs.com/wrf1/p/18436404