資源描述:
《java集合類 set、list、map、queue使用場景梳理》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、1.Java集合類基本概念在編程中,常常需要集中存放多個數(shù)據(jù)。從傳統(tǒng)意義上講,數(shù)組是我們的一個很好的選擇,前提是我們事先已經(jīng)明確知道我們將要保存的對象的數(shù)量。一旦在數(shù)組初始化時指定了這個數(shù)組長度,這個數(shù)組長度就是不可變的,如果我們需要保存一個可以動態(tài)增長的數(shù)據(jù)(在編譯時無法確定具體的數(shù)量),java的集合類就是一個很好的設計方案了。集合類主要負責保存、盛裝其他數(shù)據(jù),因此集合類也被稱為容器類。所以的集合類都位于java.util包下,后來為了處理多線程環(huán)境下的并發(fā)安全問題,java5還在java.util.concurrent包下提供了一些多線程支持的集合類。在學習Java中的集合類的AP
2、I、編程原理的時候,我們一定要明白,"集合"是一個很古老的數(shù)學概念,它遠遠早于Java的出現(xiàn)。從數(shù)學概念的角度來理解集合能幫助我們更好的理解編程中什么時候該使用什么類型的集合類。Java容器類類庫的用途是"保存對象",并將其劃分為兩個不同的概念:1)Collection一組"對立"的元素,通常這些元素都服從某種規(guī)則 1.1)List必須保持元素特定的順序 1.2)Set不能有重復元素 1.3)Queue保持一個隊列(先進先出)的順序2)Map一組成對的"鍵值對"對象Collection和Map的區(qū)別在于容器中每個位置保存的元素個數(shù):1)Collection每個位置只能保存一個元素(
3、對象)2)Map保存的是"鍵值對",就像一個小型數(shù)據(jù)庫。我們可以通過"鍵"找到該鍵對應的"值"2.Java集合類架構(gòu)層次關(guān)系1.InterfaceIterable迭代器接口,這是Collection類的父接口。實現(xiàn)這個Iterable接口的對象允許使用foreach進行遍歷,也就是說,所有的Collection集合對象都具有"foreach可遍歷性"。這個Iterable接口只有一個方法:iterator()。它返回一個代表當前集合對象的泛型迭代器,用于之后的遍歷操作1.1CollectionCollection是最基本的集合接口,一個Collection代表一組Object的集合
4、,這些Object被稱作Collection的元素。Collection是一個接口,用以提供規(guī)范定義,不能被實例化使用1)SetSet集合類似于一個罐子,"丟進"Set集合里的多個對象之間沒有明顯的順序。Set繼承自Collection接口,不能包含有重復元素(記住,這是整個Set類層次的共有屬性)。Set判斷兩個對象相同不是使用"=="運算符,而是根據(jù)equals方法。也就是說,我們在加入一個新元素的時候,如果這個新元素對象和Set中已有對象進行注意equals比較都返回false, 則Set就會接受這個新元素對象,否則拒絕。因為Set的這個制約,在使用Set集合的時候,應該注意兩點
5、:1)為Set集合里的元素的實現(xiàn)類實現(xiàn)一個有效的equals(Object)方法、2)對Set的構(gòu)造函數(shù),傳入的Collection參數(shù)不能包含重復的元素1.1)HashSetHashSet是Set接口的典型實現(xiàn),HashSet使用HASH算法來存儲集合中的元素,因此具有良好的存取和查找性能。當向HashSet集合中存入一個元素時,HashSet會調(diào)用該對象的hash Code()方法來得到該對象的hashCode值,然后根據(jù)該HashCode值決定該對象在HashSet中的存儲位置。值得主要的是,HashSet集合判斷兩個元素相等的標準是兩個對象通過equals()方法比較相等,
6、并且兩個對象的hashCode()方法的返回值相等1.1.1)LinkedHashSetLinkedHashSet集合也是根據(jù)元素的hashCode值來決定元素的存儲位置,但和HashSet不同的是,它同時使用鏈表維護元素的次序,這樣使得元素看起來是以插入的順序保存的 。當遍歷LinkedHashSet集合里的元素時,LinkedHashSet將會按元素的添加順序來訪問集合里的元素。LinkedHashSet需要維護元素的插入順序,因此性能略低于HashSet的性能,但在迭代訪問Set里的全部元素時(遍歷)將有很好的性能(鏈表很適合進行遍歷)1.2)SortedSet此接口主
7、要用于排序操作,即實現(xiàn)此接口的子類都屬于排序的子類1.2.1)TreeSetTreeSet是SortedSet接口的實現(xiàn)類,TreeSet可以確保集合元素處于排序狀態(tài)1.3)EnumSetEnumSet是一個專門為枚舉類設計的集合類,EnumSet中所有元素都必須是指定枚舉類型的枚舉值,該枚舉類型在創(chuàng)建EnumSet時顯式、或隱式地指定。EnumSet的集合元素也是有序 的,它們以枚舉值在Enum類內(nèi)的定義順序來決定集合元素的