ArrayList :-- 就是Object数组,初始化长度10,数据存储有序
LinkendList:-- 链表 ,查询快增删慢
Vector: Object数组,默认长度10 ,线程安全
HashMap:-- 数据+链表(大于8转红黑树),key无序, 默认长度16,扩容因子0.75
HashTable: 链表,默认长度11,扩容因子0.75,线程安全
LinkedHashMap:双向链表,有序
TreeMap:有序,二叉树存储,线程不安全
HashSet:不可重复
TreeSet:通过treeMap实现,不可重复,有序
LinkedHashSet:继承HashSet,链表储存
HashMap是 数组+链表+红黑树(JDK1.8增加了红黑树部分)
添加数据时首先计算key的hash值,但是会出现哈希碰撞从而因为了链表
- 默认大小为16 扩容因子0.75
- 链表长度大于8时转为红黑树
- 线程不安全的HashMap
- 在多线程使用场景中使用线程安全的ConcurrentHashMap。
LinkedList是一个链表
ArrayList 底层的数据结构就是数组 ,是线程不安全的
- 默认大小为10 扩容1.5倍
ArrayList、LinkedList对比
- ArrayList的查找性能好,因为底层是数组,适用于查找元素。
- LinkedList底层是双链表,插入或者删除元素来说,操作方便,性能高。