文章目录
- 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