List接口
- ArrayList
- 动态数组,与Arr[]一样,不过默认情况下生成10个初始容量,并且可以动态扩容。
- LinkedList
- 双向链表
- vector
- 与ArrayList一样。但是线程安全的。
- stack
- 后进先出的堆栈
Set接口
- EnumSet
- 枚举类型的专用set,所有元素都必须是枚举类型
HashSet
- 内部以HashCode实现,内部元素的顺序是由哈希码来决定的,不保证set的迭代顺序,特别是它不保证该顺序恒久不变。
- 当向Set中插入数据时,会首先调用元素对象中的hashCode()方法,如果集合中不存在相同hashCode,则插入该元素。如果已经存在具有相同hashCode的元素,则会调用equals()方法进行比较,如果返回true,表示相同,不插入元素,否则插入元素。
- 注意该类是非线程安全的,如果想获得线程安全的HashSet可以使用如下方法:
Collections.synchronizedSet(new HashSet());
LinkedHashSet
- 基于HashSet实现,但是保持元素的有序状态。内部维护一个双向链表。
- 类是非线程安全的,如果想获得线程安全的LinkedHashSet可以使用如下方法:
Collections.synchronizedSet(new LinkedHashSet());
TreeSet
- 基于TreeMap来实现的,生成一个排序状态的Set。
- 可以使用元素的自然顺序排序
- 也可以根据创建Set时自定义的Comparator进行排序。
CopyOnWriteArraySet
- 线程安全
- 该类是基于CopyOnWriteArrayList实现的,所以该类共享CopyOnWriteArrayList的基本属性,对写操作加锁并即写时复制(Copy-On-Write,是用于程序设计中的一种优化策略),对多操作不加锁。线程安全等。
ConcurrentSkipListSet
- SortedSet
- 和TreeSet一样,添加的元素按照元素的自然顺序(递增或其他顺序)在集合中进行存储,或者根据传入的实现Comparator接口的实例来对元素进行排序。
- 基于ConcurrentSkipListMap实现的,是线程安全的,并且其迭代器是弱一致的,不会抛出ConcurrentModificationException异常,可以并发地对集合处理其他操作。
Map接口
- HashMap
- 非线程安全
- TreeMap
- 键以某种顺序规则排序,内部以红黑树实现,实现了sortedMap接口
HashTable
- hashtable是线程安全的,即hashtable的方法都提供了同步机制;hashmap不是线程安全的,即不提供同步机制 ;hashtable不允许插入空值,hashmap允许!
ConcurrentHashMap
- 线程安全