Java Collection架構簡略,javacollection架構
Collection架構的結構:
一、Collection結構架構圖:
二、Set、List、Queue、Map
- Set:collection的派生介面,不允許重複元素——equal(),取出元素的方法只有迭代器。
- HashSet:按Hash演算法尋找、存取效能好;順序不定;非同步,線程不安全;元素可為null。(hash意義在於快速尋找,根據元素的值便可快速尋找其儲存位置)
- LinkedHashSet:Hashset 的子類,也是按hashcode決定儲存位置,但用鏈表維護,使得元素順序與添加順序一致。其他比HashSet 慢,但遍曆快;
- TreeSet:用SortedSet介面實現的,採用紅/黑樹狀結構資料結構儲存。確保元素處於排序狀態;
- 1. 自然排序:調用Comparable介面的實現方法進行大小比較(必須實現Comparable介面);
- 2. 定製排序:指定升序或降序。建立TreeSet時,提供一個Comparator對象;
- EnumSet:元素必須是指定枚舉類型值,有序;位向量形式儲存,緊湊高效、運行效率高、大量操作快;不許加null;效能最好。
* HashSet 與TreeSet推薦放入不可變類;HashSet效能總是比TreeSet好(添加、查詢操作),都是線程不安全的!
- List:collection的派生介面,允許重複元素。ListIterator(),返回Listiterator對象;
- ArrayList: 基於數組實現List介面,線程不安全
- Vector: 安全執行緒、有Stack子類,
- LinkedList:基於鏈表實現List介面,插入、刪除非常快;實現Deque介面,可作為棧來使用!
- 固定長度的List: Array.asList("",""), 只能遍曆,不能增加刪除元素。
- Queue:隊列、先進先出;
- PriorityQueue:先將隊列按大小排序,將最小元素按隊列取出。自然排序元素需實現Comparable介面,且元素屬同一類;定製排序則建立隊列是傳入一Comparator對象,且不要求元素實現Comparable介面
- Deque介面:雙隊列,Queue的子介面。可當做棧來使用。有pop及push方法;
- ArrayDeque:Deque的實作類別,可作為棧使用;
- LinkedList:實現Deque介面及List介面,可當雙端隊列及棧使用。
- Map: key-value;key不可重複!
- Hashtable: 古老的Map實作類別。安全執行緒。不允許null作key和value;
- HashMap: 可用null作為key和value。以上兩者可以對象必須實現hashCode()和equals()方法;
- LinkedHashMap: HashMap的子類,用雙向鏈表維護key-value對的次序(key),保持插入順序;
- SortedMap介面——>TreeMap實作類別:紅/黑樹狀結構資料結構;
- WeakHashMap實作類別:HashMap的key保留實際對象的強引用,WeakHashMap的key只保留對實際對象的弱引用。
- IdentityHashMap實作類別:key1==key2,倆key嚴格相等才為相等。
- EnumMap實作類別: 所有key必須是單個枚舉類的枚舉值
* 使用Properties讀寫屬性檔案,key-value對;三、Collection和CollectionsCollection是集合架構的頂層介面,見一;Collections是一個對collection操作的工具類,提供的都是靜態方法(尋找,排序,反轉,加鎖)Collection主要操作如下:
1. static <T> int binarySearch(List<? extends Comparable<? super T>> list, T key)
該方法是尋找T對象在List中匹配元素的位置。要求List集合中必須全部都是T對象,T對象必須實現Comparable介面, 如果尋找成功返回對象在List中的位置,否則返回負數。該方法執行前首先要對List對象中的元素排序。該方法還有一個重載方法是:
static <T> int binarySearch(List<? extends T> list, T key, Comparator<? super T> c)
該方法也是尋找T對象在List中的位置,List集合中必須全部是T元素,但是不要去T必須實現Comparable介面,而是要求傳入一個比較子。
2. sort(List<T> list)
對List中的元素按照自然排序。要按照使用者自訂方式進行排序,必須實現Comparator介面。 sort (List<T> list, Comparator<? super T> c) 根據指定比較子產生的順序對指定列表進行排序。
3. swap(List<?> list, int i, int j) 在指定列表的指定位置處交換元素。
4. reverse(List<?> list)反轉指定列表中元素的順序。
四、參考:《瘋狂java講義》(例子很多,以實用為主)Java:集合,Collection介面架構圖(找了一些參考,有些寫得很亂,還是喜歡這種架構清晰的)