Java容器類概述
Java容器有兩類框架弱贼,一類是Collection,一類是Map,下面通過兩張圖片來分析一下這兩種容器喘落,之所以說是容器荒叼,是因為Map不屬于Collection,而是一個單獨的接口
Collection接口
思維導圖中的標注黑體的是比較常見的集合方妖,主要用Arraylist,LinkedList,HashSet,Collection繼承了Iterable接口
Collection的內(nèi)部方法
這些方法都很常見拌屏,根據(jù)名字基本上都能知道具體的作用潮针,所以但凡是實現(xiàn)了Collection的接口都能夠使用這些方法。
Collection的實現(xiàn)類
List
源碼的注釋
- An ordered collection (also known as a <i>sequence</i>). The user of this
interface has precise control over where in the list each element is
inserted. The user can access elements by their integer index (position in the list), and search for elements in the list. - 意思是說List是一個有序的Collection倚喂,這個接口的使用者能夠準確的控制他所插入的每一個元素每篷,使用者也能夠根據(jù)他們的整數(shù)索引在List中查找元素。
常見的List的實現(xiàn)有ArrayList,LinkedList
Set
源碼的注釋
- A collection that contains no duplicate elements. More formally, sets
contain no pair of elements <code>e1</code> and <code>e2</code> such that
<code>e1.equals(e2)</code>, and at most one null element. As implied by
its name, this interface models the mathematical <i>set</i> abstraction. - 一個沒有重復元素的集合雳攘,并且带兜,set也不能存放兩個用equals方法比較相等的元素,最多可以放入一個null值吨灭。就像他的名字一樣刚照,這個接口模擬了數(shù)學中的集合。
常見的set集合有HastSet
Queue
源碼的注釋
- A collection designed for holding elements prior to processing.
Besides basic operations,queues provide additional insertion, extraction, and inspection
operations. Each of these methods exists in two forms: one throws
an exception if the operation fails, the other returns a special
value (either {@code null} or {@code false}, depending on the
operation). The latter form of the insert operation is designed
specifically for use with capacity-restricted {@code Queue}
implementations; in most implementations, insert operations cannot
fail. - 一種被設計用來可以放置優(yōu)先級元素的集合喧兄,除了基本的Collection操作以外无畔,queue還提供另外的插入,提取和檢查操作吠冤。每一個方法的執(zhí)行結(jié)構(gòu)存在兩種形式:一種是執(zhí)行失敗會跑出一種異常浑彰,另外一種是返回特定的結(jié)果:null值或者false,具體取決于操作的結(jié)果拯辙。后一種插入操作的返回形式是針對特定容量的實現(xiàn)郭变,在queue的大多實現(xiàn)里,插入操作是不會失敗的涯保。
常見的queue的實現(xiàn)有BlockingQueue跟PriorityQueue
Comparable跟Comparator
這是Java在集合中提供的兩個接口诉濒,主要用來比較兩個元素和進行排序,如果只是比較相同的兩個類,則都可以實現(xiàn)夕春,不過還是有些區(qū)別:
- Comparator是在類的外部進行排序未荒,Comparable是在類的內(nèi)部進行排序
- Comparator比較適合對于多個類進行排序,只需要實現(xiàn)一個Comparator就可以及志,Comparable則需要在每個類中實現(xiàn)Comparable接口
Collection的工具類
Collection提供了兩個工具類疚察,一個是Collections,一個是Arrays
Collections
Arrays
Java源碼的命名都比較規(guī)范凿蒜,通過名字基本上能看出用法毅哗,有些即時不能夠看出來用法剪返,點擊去看一下注釋,或者寫個小demo也能知道倚搬,通過這兩個工具類冶共,實際上可以簡化我們隊集合跟數(shù)組的操作,例如排序潭枣,同步,求最大值幻捏,最小值等盆犁,感興趣的可以看一下,文章圖片比較多篡九,是因為覺得一圖勝千言谐岁,所以代碼就盡量少貼嘍。
Map接口
思維導圖中的標注黑體的是比較常見的集合,主要有HashedMap,LinkedHashMap伊佃,TreeMap窜司。
Map的內(nèi)部方法
源碼注釋:
- An object that maps keys to values. A map cannot contain duplicate keys; each key can map to at most one value.
- 一個能夠?qū)ey應射成value的Objec,Map不能有重復的key,每個key最多只能對應一個value
Map的實現(xiàn)類
比較常見的是HashMap,LinkedHashMap
總結(jié)
上面大題就是Java的整個容器框架,分析地比較簡單航揉,接下來主要是分析下常見的Java容器類的實現(xiàn)類塞祈,畢竟整個源碼比較復雜,不能面面俱到帅涂。主要是通過思維導圖和IDEA生成的UML來進行分析议薪,這樣會顯得整個思路比較清晰,不至于一頭鉆進源碼媳友,只見樹木斯议,不見森林。