Java集合源碼解析系列博客
轉載請標明出處:
https://blog.csdn.net/u011035026/article/details/103259019
1、Java集合框架的認識
我們平時寫代碼時候,經常會用到Java的一些集合類,但是我們有真正的人系統的認識它們嗎?或者你認識了,過了一段時間你還記得它們嗎?相信大多數同學都是僅僅對集合類中的某一些常用的類有印象,因此現在我想把這些集合類進行一個詳細的整理,從而方便自己和大家們一起加深對Java集合類的認識。
根據上述思路,咱們先看下來源,Java集合是Java提供的工具包,包含了常用的數據結構:集合、鏈表、隊列、棧、數組、映射等等,Java集合工具包的位置是java.util.*,Java集合主要有4個部分:List列表、Set集合、Map映射、工具類(Iterator迭代器、Enumeration枚舉類、Arrays和Collections)。
集合框架是一個用來代表和操縱集合的統一架構,所有的集合框架都包含如下內容:
- 接口:是代表集合的抽象數據類型。例如Collection、List、Set、Map等。之所以定義多個接口,是爲了以不同的方式操作集合對象。
- 實現(類):是集合接口的具體實現。從本質上講,它們是可重複使用的數據結構,例如:ArrayList、LinkedList、HashSet、HashMap。
- 算法:是實現集合接口的對象裏的方法執行的一些有用的計算,例如:搜索和排序。這些算法被稱爲多態,那是因爲相同的方法可以在相似的接口上有着不同的實現。
- 除了集合,該框架也定義了幾個Map接口和類。Map裏存儲的是鍵/值對。儘管Map不是集合,但是它們完全整合在集合中。
2、Java集合框架圖
注意:虛線框是接口,實線框是類。
看到上圖後是不是覺得有點亂,彆着急,現在咱們把它們捋一捋分個類就清楚了。
(1)Collection,具有集合的基本操作和屬性的高度抽象的接口,有三個子類分別如下:
- List是一個有序的隊列,實現類有4個:LinkedList, ArrayList, Vector, Stack。
- Set是一個不允許有重複元素的集合。實現類有3個:TreeSet、HastSet、LinkHastSet。
- Queue
(2)Map,一個映射接口,即key-value鍵值對。
- AbstractMap是個抽象類,它實現了Map接口中的大部分API。實現類有6個:TreeMap、HashMap、LinkHashMap、IdentityHashMap、WeakHashMap、HashTable。
- SortedMap 是繼承於Map的接口。內容是排序的鍵值對,通過比較器(Comparator)。
(3)Iterator,它是遍歷集合的工具,即我們通常通過Iterator迭代器來遍歷集合。
3、Java集合框架各種類的使用場景
爲了方便描述,直接上圖比較直觀