集合框架介紹
在Java語言中,Java語言的設(shè)計者對常用的數(shù)據(jù)結(jié)構(gòu)和算法做了一些規(guī)范(接口)和實現(xiàn)(具體實現(xiàn)接口的類)。所有抽象出來的數(shù)據(jù)結(jié)構(gòu)和操作(算法)統(tǒng)稱為Java集合框架(JavaCollectionFramework)。
Java集合框架的好處主要有一下幾點:
- 降低程序員工作量。話外音:該有的數(shù)據(jù)結(jié)構(gòu)和算法框架已經(jīng)實現(xiàn)了,不用自己寫了,直接用就可以了;
- 提供了高性能的數(shù)據(jù)結(jié)構(gòu)和算法實現(xiàn),從而提高了性能。話外音:你們自己寫的話有可能性能比較垃圾,我寫好了高性能實現(xiàn)給你們用;
- 減少了學(xué)習API的工作量。話外音:我把這些集合的API給抽象處理來,你們只要學(xué)習少量的通用API就行了,你就偷著樂吧;
- 減少了設(shè)計和實現(xiàn)API的工作量。話外音:該做的我都給你們做了。
綜上所述,Java程序員在具體應(yīng)用時,不必考慮數(shù)據(jù)結(jié)構(gòu)和算法實現(xiàn)細節(jié),只需要用這些類創(chuàng)建出來一些對象,使用集合提供的API就能工作的很好了,這樣就大大提高了編程效率。
集合框架結(jié)構(gòu)圖

再上一張簡單點的

集合框架的組成
集合框架主要由以下幾部分組成:
-
集合接口
表示不同類型的集合,例如List,Set以及Map。這些接口構(gòu)成了框架的基礎(chǔ)。- Collection
- Set
- List
- Queue
- Deque
- Map
- SortedSet
- SortedMap
- NavigableSet
- NavigableMap
- BlockingQueue
- TransferQueue
- BlockingDeque
- ConcurrentMap
- ConcurrentNavigableMap
-
通用實現(xiàn)
集合接口的通用實現(xiàn)。- HashSet
- TreeSet
- LinkedHashSet
- ArrayList
- ArrayDeque
- LinkedList
- PriorityQueue
- HashMap
- TreeMap
- LinkedHashMap
-
包裝器實現(xiàn)
為某些實現(xiàn)提供了額外的功能,比如同步。- Collections.unmodifiableInterface
- Collections.synchronizedInterface
- Collections.checkInterface
-
適配器實現(xiàn)
- newSetFromMap(map)
- asLifoQueue(Deque)
-
便利的實現(xiàn)
集合接口的高性能迷你實現(xiàn)。- Arrays.asList
- emptyList, emptySet, emptyMap
- singleton, singletonList, singletonMap
- nCopys
-
遺留實現(xiàn)
早期版本的集合類,包括Vector和Hashtable。- Vector
- Hashtable
-
特殊功能實現(xiàn)
- WeakHashMap
- IdentityHashMap
- CopyOnWriteArrayList
- CopyOnWriteArraySet
- EnumSet
- EnumMap
-
支持并發(fā)的實現(xiàn)
專門為高并發(fā)設(shè)計的實現(xiàn)。- ConcurrentLinkedQueue
- LinkedBlockingQueue
- ArrayBlockingQueue
- PriorityBlockingQueue
- DelayQueue
- SynchronousQueue
- LinkedBlockingDeque
- LinkedTransferQueue
- ConcurrentHashMap
- ConcurrentSkipListSet
- ConcurrentSkipListMap
-
抽象實現(xiàn)
集合接口的部分實現(xiàn)以方便自定義實現(xiàn)。- AbstractCollection
- AbstractSet
- AbstractList
- AbstractSequentialList
- AbstractQueue
- AbstractMap
-
算法
集合里的靜態(tài)方法。- sort(List)
- binarySearch(List, Object)
- reverse(List)
- shuffle(List)
- fill(List, Object)
- copy(List dest, List src)
- min(Collection)
- max(collection)
- rotate(List list, int distanse)
- replaceAll(List list, Object oldVal, Object newVal)
- indexOfSubList(List source, List target)
- lastIndexOfSubList(List source, List target)
- swap(List, int, int)
- frequency(Collection, Object)
- disjoint(Collection, Collection)
- addAll(Collection<? super T>, T...)
-
基礎(chǔ)設(shè)施
為集合接口提供必要支持的接口。- Iterators
- Iterator
- ListIterator
- Ordering
- Comparable
- Comparator
- Runtime exceptions
- UnSupportedOperationException
- ConcurrentModificationException
- Performance
- RandomAccess
- Iterators
-
數(shù)組工具
為數(shù)組提供的工具函數(shù)。- Arrays