Java Collection架構簡略,javacollection架構

來源:互聯網
上載者:User

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介面架構圖(找了一些參考,有些寫得很亂,還是喜歡這種架構清晰的)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.