http://blog.csdn.net/u011240877/article/details/52773577
hashmap&hashtable:http://blog.csdn.net/fujiakai/article/details/51585767
linkedhashmap:http://blog.csdn.net/justloveyou_/article/details/71713781
linkedhashmap:https://blog.csdn.net/justloveyou_/article/details/71713781
Collection<E> 接口是所有单列集合的共同父接口,下面列出了常用的Collection子类集合及其继承关系。
Collection:单列集合
- List 有序(存储顺序和取出顺序一致),可重复
- ArrayList ,线程不安全,底层使用数组实现,查询:O(1),增加:O(1),删除:O(n)。查询效率高。初始容量10,每次容量不足时,自增长度的一半,int newCapacity = oldCapacity + (oldCapacity >> 1)
- LinkedList , 线程不安全,底层使用双向链表实现,查询:O(n),增删:O(1)
- Vector , 线程安全,底层使用数组实现,查询快,增删慢。效率低。每次容量不足时,默认自增长度的一倍(如果不指定增量的话)
- Set 元素唯一
- HashSet 底层是由HashMap实现的,无序,增删查:O(1)
- LinkedHashSet 底层数据结构由哈希表和链表组成。哈希表保证元素的唯一性,链表保证元素有序。增删查:O(1)
- TreeSet 基于 TreeMap (红黑树)的 NavigableSet 实现。有序,增删查:O(logN)
- HashSet 底层是由HashMap实现的,无序,增删查:O(1)
Map:键值对集合,key唯一
- HashMap,线程不安全,基于数组+链表实现。key,value均可为空,增删查:O(1)
- LinkedHashMap 线程不安全, HashMap + 额外的双向链表。按插入顺序。增删查:O(1)
- HashTable,线程安全,其他基本等同hashmap
- TreeMap,线程不安全,基于红黑树实现。有序。增删查:O(logn)
- WeakHashMap,线程不安全,特征:存储元素是弱引用,可以被gc,通常用于缓存