集合框架可以分为Collection和Map
Collection
- Set:元素不重复(底层是Map)
- HashSet
- 集合中元素可以为null,但只有一个元素为null
- 基于HashMap实现的,底层是Hash表,不能保证元素排列顺序
- 元素对象比较是否重复:先调用hashcode方法,再调用equals方法
- TreeSet
- 基于TreeMap实现的,底层是红黑树,不允许元素是null
- 支持排序:自然排序——元素实现Comparable接口调用compareTo方法比较大小,定制排序——自定义比较器类实现Comparator接口调用compare方法比较元素大小
- HashSet
- List:元素有顺序(索引顺序)
- ArrayList
- 底层是数组,查询快(索引),增删慢
- 线程不安全,效率较Vector高
- Vector
- 底层是数组,查询快(索引),增删慢
- 线程安全(同步影响性能),效率较ArrayList低
- LinkedList
- 底层是一组连接的记录,是链表,查询慢(需要遍历),增删快(修改前后节点即可)
- 线程不安全
- ArrayList
Map(类比set)
- HashMap
- key和value可以为null,不安全
- TreeMap
- Hashtable
- key和value不能为null,安全
- Properties
---------------------------------------------------------------------------------------------------------------------
线程不同步的集合如何转换成线程同步的集合:
- 方法一:Collections中的静态方法
- 方法二:java.util.concurrent包下提供的同步集合容器