Java集合分为Collection和Map两种体系
Collection接口
- List
- ArraysList
- Vector
- LinkedList
- Set
- HashSet
- LinkedHashSet
- TreeSet
Map接口
- HashMap
- LinkedHashMap
- Hashtable
- Properties
- TreeMap
不同集合的使用场景
实际开发中选择集合的实现类,主要取决于业务操作的特点
存储单列对象,使用Collection接口下的集合
- 允许元素重复,使用实现List接口的集合
- 查询操作多, 使用ArrayList集合
- 增删操作多, 使用LinkedList集合
- 需要线程安全,使用Vector集合
- 不允许元素重复,使用实现Set接口的集合
- 无序:元素的添加顺序和取出顺序不一样,使用HashSet集合
- 有序:元素的添加顺序和取出顺序一样,使用LinkedHashSet集合
- 排序:可以对元素进行排序,使用TreeSet集合
存储一组键值对,使用Map接口下的集合
- 键无序:键插入的顺序和取出顺序不一样,使用HashMap集合
- 键有序:键插入的顺序和取出顺序不一样,使用LinkedHashMap集合
- 键排序:可以对键进行排序,使用TreeMap集合
- 读取文件:使用Properties集合
集合遍历的方式
所有实现Collection接口的集合,都有iterator;所有实现Map接口的集合,都有entrySet
List
链表的优点和缺点:
优点:因为链表上的元素在空间存储上内存地址不连续,所以随机增删元素的时候不会有大量元素位移,因此随机增删效率高。在以后的开发中如果有大量的增删集合中的元素时,建议使用LinkedList
缺点:不能通过数学表达式的计算查找元素的内存地址,每一次查找都是从头开始遍历,所以LinkedList的查找效率比较低。