Collection(普通集合类)
- 继承了Iterable接口,具有迭代器特性
- 可以转换为数组
List
- 容量可变
- 按索引访问
- 有序
- 可重复
ArrayList
- 非线程安全
- 允许快速随机存取。
- 等同与动态数组
LinkedList
- 双向链表方式实现,内含first,last两个节点(Node),Node内包含prev和next
- 最佳顺序存取
- 适合插入和移除元素
Vector
- 废弃
CopyOnWriteArrayList
/* The lock protecting all mutators /
transient final ReentrantLock lock = new ReentrantLock();/* The array, accessed only via getArray/setArray. /
private volatile transient Object[] array;- 使用锁和数组实现
Set
- 不按特定方式排序
- 不能有重复对象
HashSet
- 默认使用的是hashMap,数据是放到key里的,value是个固定的final对象
- 有个构造方法是可以设置为LinedHashMap,见LinkedHashSet
TreeSet
- 元素按序存放
- 内部默认使用的是TreeMap,数据是放到key里的,value是个固定的final对象
LinkedHashSet
- 元素按序存放
- 内部使用的HashSet(int initialCapacity, float loadFactor, boolean dummy),这个方法有初始化的是LinkedHashMap
ConcurrentSkipListSet
内部使用ConcurrentSkipListMap
CopyOnWriteArraySet
内部使用CopyOnWriteArrayList实现
MAP(KV集合类)
- key不允许重复
HashMap
- 非线程安全
- 内部使用数组加链表实现.数组内放的是Entry,Entry的实现是个单向链表
LInkedHashMap
- 继承HashMap
- 内部保存一个Entry做为header 继承与HashMap的Set,这个新的是双向链表
- 使用链表形式确保迭代顺序
TreeMap
- 二叉树数据结构
- 红黑树自平衡算法提高性能
- 有排序
HashTable
- 废弃
ConcurrentHashMap
- 无序的
- 线程安全
- 内部集合
transient Set keySet;
transient Set
ConcurrentSkipListMap
- 有序的
- 线程安全
- 内部集合
/* Lazily initialized key set /
private transient KeySet keySet;
/* Lazily initialized entry set /
private transient EntrySet entrySet;
/* Lazily initialized values collection /
private transient Values values;
/* Lazily initialized descending key set /
private transient ConcurrentNavigableMap
总结
- 线程不安全的集合可以使用Collections.synchronized*来做安全的处理,放弃使用vector,hashtable等类