Collection集合中各子集合的差别
一.HashMap和HashTable的差别
1.HashMap能允许一个null key和多个null value值;HashTable不允许为null;
2.HashMap不同步非安全;HashTable是同步的,线程安全。
3.两者加载因子都是0.75;但是扩容增量存在差别;HashMap为1倍,HashTable为2倍+1;
二.ArrayList、Vector、LinkedList差别
1.ArrayList与Vector的差别
底层都是数组结构;
Vector扩容是2倍;ArrayList是1.5倍;(Vector每次请求其大小的双倍空间,而ArrayList每次对size增长50%)
Vector是线程安全的,ArrayList非线程安全;
1.同步性(Synchronization):
Vector中的public方法多数添加了synchronized关键字、以确保方法同步、也即是Vector线程安全、ArrayList线程不安全。
2.扩容(Resize):
ArrayList以1.5倍的方式在扩容、Vector 当扩容容量增量大于0时、新数组长度为原数组长度+扩容容量增量、否则新数组长度为原数组长度的2倍。
3.性能(Performance):
由于第一点的原因、在性能方便通常情况下ArrayList的性能更好、而Vector存在synchronized 的锁等待情况、需要等待释放锁这个过程、所以性能相对较差。
4.快速失败(fail-fast):
Vector 的 elements 方法返回的 Enumeration 不是 快速失败(fail-fast)的。而ArrayList是快速失败(fail-fast)
2.ArrayList与LinkedList差别
ArrayList按数组结构进行存储;含有索引,查询快;
LinkedList按链表结构进行存储;增删快;
ArrayList:
底层数据结构是数组,查询快,增删慢线程不安全,效率高
Vector:
底层数据结构是数组,查询快,增删慢线程安全,效率低
LinkedList:
底层数据结构是链表,查询慢,增删快线程不安全,效率高
三.Collections和Collection差别
Collection是集合的父类,上级父类为Iterator;包含List集合和Set集合的子类;
Collections是Collection的工具类;提供了常用的集合静态方法;
四、LinkedHashSet
底层数据结构由哈希表和链表组成;哈希表保证元素的唯一性;链表保证元素有素;
五、更多参考
http://blog.csdn.net/lzhifang006/article/details/44600347
http://skyuck.iteye.com/blog/526358