1. map
实现类,
HashMap
无序, 键值可为null ,非同步
Hashtable
无序, 键值非null,作键的对象必须实现 hashCode 方法和 equals , 同步, 性能低
LinkedHashMap
有序记录插入顺序,如果在映射中重新插入 键,则插入顺序不受影响.允许 null 元素 ,与 HashMap 一样规范,维护着一个运行于所有条目的双重链接列表,此链接列表定义了迭代顺序(插入顺序)。
ConcurrentHashMap
与hashtable相同规范,它们都可以用于多线程的环境,但是当Hashtable的大小增加到一定的时候,性能会急剧下降,因为迭代时需要被锁定很长的时间。因为ConcurrentHashMap引入了分割(segmentation),不论它变得多么大,仅仅需要锁定map的某个部分,而其它的线程不需要等到迭代完成才能访问map。简而言之,在迭代的过程中,ConcurrentHashMap仅仅锁定map的某个部分,而Hashtable则会锁定整个map
TreeMap
基于红黑树,该映射根据其键的自然顺序进行排序
2. list
ArrayList
基于可变数组实现, 允许null元素,不支持同步
LinkedList
基于连表实现, 提供先进先出队列操作,允许null元素,非同步,
Stack
表示后进先出 ,它通过五个操作对类 Vector 进行了扩展 ,它提供了通常的 push 和 pop 操作,以及取堆栈顶点的 peek 方法
Vector
实现可增长的对象数组, 线程安全, Vector类对集合的元素操作时都加了synchronized
3. Set
HashSet
无序, 非同步, 允许使用 null 元素,由哈希表(实际上是一个 HashMap 实例)支持。
LinkedHashSet
有序, 非同步, 维护着一个运行于所有条目的双重链接列表。此链接列表定义了迭代顺序
TreeSet
使用元素的自然顺序对元素进行排.
EnumSet
与枚举类型一起使用的专用 Set 实现。枚举 set 中所有键都必须来自单个枚举类型,枚举 set 在内部表示为位向量。此表示形式非常紧凑且高效。此类的空间和时间性能应该很好,足以用作传统上基于 int 的“位标志”的替换形式,具有高品质、类型安全的优势。如果其参数也是一个枚举 set,则批量操作(如 containsAll 和 retainAll)也应运行得非常快