一個簡單知識點,List和Set都是繼承Collection接口,HashMap實現了Map接口,而這兩個頂級接口的實現類都有哪些呢?
Collection<E>
子接口:BlockingDeque<E>, BlockingQueue<E>, Deque<E>, List<E>, NavigableSet<E>, Queue<E>, Set<E>, SortedSet<E>, TransferQueue<E>
BlockingDeque<E>【雙向阻塞隊列】
實現類:LinkedBlockingDeque
BlockingQueue<E>【阻塞隊列】
實現類:ArrayBlockingQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedTransferQueue, PriorityBlockingQueue, SynchronousQueue
Deque<E>【雙向隊列】
實現類:ArrayDeque, ConcurrentLinkedDeque, LinkedBlockingDeque, LinkedList
List<E>【有序列表】
實現類:AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector
NavigableSet<E>【SortedSet的擴展】
實現類:ConcurrentSkipListSet, TreeSet
Queue<E>【隊列】
實現類:AbstractQueue, ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedDeque, ConcurrentLinkedQueue, DelayQueue, LinkedBlockingDeque, LinkedBlockingQueue, LinkedList, LinkedTransferQueue, PriorityBlockingQueue, PriorityQueue, SynchronousQueue
Set<E>【集合】
實現類:AbstractSet, ConcurrentHashMap.KeySetView, ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, JobStateReasons, LinkedHashSet, TreeSet
SortedSet<E>【有序集合】
實現類:ConcurrentSkipListSet, TreeSet
TransferQueue<E>【一個BlockingQueue,其中生產者可以等待消費者接收元素】
實現類:LinkedTransferQueue
結構圖:
=======================================================================================================================================
Map<K,V>
子接口:Bindings, ConcurrentMap<K,V>, ConcurrentNavigableMap<K,V>, NavigableMap<K,V>, SortedMap<K,V>
實現類:AbstractMap<K,V>, Hashtable<K,V>, LinkedHashMap<K,V>
Bindings【一個key爲string類型的key/value映射類型】
實現類:SimpleBindings
ConcurrentMap<K,V>【線程安全Map】
實現類:ConcurrentHashMap, ConcurrentSkipListMap
ConcurrentNavigableMap<K,V>【支持NavigableMap操作的ConcurrentMap】
實現類:ConcurrentSkipListMap
NavigableMap<K,V>【SortedMap的擴展】
實現類:ConcurrentSkipListMap, TreeMap
SortedMap<K,V>【有序Map】
實現類:ConcurrentSkipListMap, TreeMap
AbstractMap<K,V>【抽象Map】
實現類:ConcurrentHashMap, ConcurrentSkipListMap, EnumMap, HashMap, IdentityHashMap, TreeMap, WeakHashMap
Hashtable<K,V>【線程安全Map】
實現類:Properties, UIDefaults
接下來的文章會從功能、原理、優缺點三個方面來闡述上述所有實現類