文章目录
- 1 Collection单列集合、Map双列集合
 - 1.1 Collection单列集合
 - 1.1.1 Collection单列集合及其实现类
 - 1.1.1.1 list集合与Array数组
 - 1.1.1.1.1 ArrayList
 - 1.1.1.1.2 LinekdList
 - 1.1.1.1.2 Vector
 - 1.1.1.1.2.1 ArrayList、Vector (线程安全)的区别是什么
 - 1.1.1.1.2.2 哪些集合类是线程安全的
 
- 1.1.1.2 Set集合
 - 1.1.1.2.1 HashSet
 - 1.1.1.2.2 LinkedHashSet
 - 1.1.1.2.3 TreeSet
 
1 Collection单列集合、Map双列集合

1.1 Collection单列集合
每个元素只包含一个值
1.1.1 Collection单列集合及其实现类

1.1.1.1 list集合与Array数组
list集合:添加的元素是有序的、可重复的、有索引
- list转换为数组:调用List实现类(多态)的toArray方法
 
Array数组:数组只能存储一类元素、数组有索引、可以重复、
数组初始化时需要指定大小list无需
- 数组转换成list:调用Arrays(加s的大部分情况都是工具类)的asList方法。
 
1.1.1.1.1 ArrayList
ArrayList底层
基于数组实现:查询较快、增删较慢
- 查询较快:查询时候有索引
 - 增删较慢:每增加或者删除一个,后边的元素都需要移动
 底层基于数组实现,特点:有序、可重复、有索引
1.1.1.1.2 LinekdList
LinekdList底层基于双向循环链表实现:查询较慢、增删较快
- 查询慢:双向链表有头、尾节点查询一个一个查找需确认这两个节点所以慢
 - 增删快:根据头尾节点便可完成删除、增加操作
 基于双向链表实现:有序、可重复、有索引
1.1.1.1.2 Vector
Vector:线程安全的,性能低,已逐渐被ArrayList取代。
1.1.1.1.2.1 ArrayList、Vector (线程安全)的区别是什么
| Vector | ArrayList | 
|---|---|
| 线程安全的 | 线程不安全(单线程使用) | 
| 扩容时,Vector扩容100% | ArrayList 扩容50%(节省内存) | 
| 单线程环境,我们使用ArrayList | 
1.1.1.1.2.2 哪些集合类是线程安全的
① Vector:比ArrayList多了同步锁机制
② Stack :堆栈类,先进后出,不常用
③ Hashtable:比HashtMap就多了个线程安全(性能就低了),所以还是建议HashtMap



















