針對Java集合類的小總結

來源:互聯網
上載者:User

標籤:

Java集合類包位於java.util下,有很多常用的資料結構:數組、鏈表、隊列、棧、雜湊表等等。瞭解不同的集合類的特性在開發過程中是比較重要的,感謝@蘭亭風雨的專欄分析,這裡我也根據自己的理解做輕度的總結,不再進行分析,因為上面的部落格分析已經相當優秀。

List介面實現,一般常用的為ArrayList和LinkedList,還有不太常用的Vector,Stack。比如JDK文檔聲明

Deque 介面及其實現提供了 LIFO 堆棧操作的更完整和更一致的 set,應該優先使用此 set,而非Stack類。例如:

   Deque<Integer> stack = new ArrayDeque<Integer>();

對ArrayList和Vector進行一個比較:

  • ArrayList非安全執行緒,Vector是安全執行緒的,想要使用安全執行緒的ArrayList類可以Collections.synchronizedList()進行包裹返回安全執行緒的對象,或者使用CopyOnWriteArrayList
  • 因為ArrayList和Vector基於數組實現,預設大小為10,所以需要有擴容操作,ArrayList的擴容是1.5倍+1或者所需大小,Vector是2倍
  • 都大量使用了Arrays.copyof()和System.arraycopy()進行複製,native方法,擁有數組操作的優點與不足

ArrayList和LinkedList:

  • LinkedList基於雙向鏈表實現,按Index訪問時會有一個加速操作,非安全執行緒
  • LinkedList還實現了棧和隊列的操作方法,因此也可以作為棧、隊列和雙端隊列來使用
  • LinkedList無參構造方法直接建立一個僅包含head節點的空鏈表
  • 兩個都允許Null值

Map介面實作類別HashMap和HashTable:

Hash表的解決hash值衝突的常用方法有兩種,一種是拉鏈法也就是每個hash值對應一個鏈表,另一種是線性探測法。

  • HashMap和HashTable處理衝突的方式是拉鏈法
  • HashMap非安全執行緒,HashTable安全執行緒
  • HashMap初始容量是16,載入因子是0.75,擴容後也必須為2的整數次冪;HashTable是12,且不為2的整數次冪
  • Hashtable擴容時,將容量變為原來的2倍加1,而HashMap擴容時,將容量變為原來的2倍。
  • HashMap可以為Null,HashTable不能為Null
  • Hashtable計算hash值,直接用key的hashCode(),而HashMap重新計算了key的hash值Hashtable計算hash值,直接用key的hashCode(),而HashMap重新計算了key的hash值,HashMap中通過h&(length-1)的方法來代替模數,同樣實現了均勻的散列,但效率要高很多,這也是HashMap對Hashtable的一個改進。

TreeMap:

  • 基於2-3平衡樹的紅/黑樹狀結構來實現,最下面會對紅/黑樹狀結構做一個簡單的介紹
  • TreeMap的key不能為null,排序時要實現Comparable介面,HashMap要求重寫hashCode方法和equals方法來確保沒有重複的key
  • TreeMap的查詢、插入、刪除效率均沒有HashMap高,一般只有要對key排序時才使用TreeMap

紅/黑樹狀結構介紹:

紅/黑樹狀結構是一種特殊的2-3平衡樹,它可以保證所有的黑色邊到根節點的距離相等。紅/黑樹狀結構是有序的二叉樹,通過左旋轉、右旋轉、變色等操作,使樹基本保持平衡狀態,防止出現一邊倒的情況,它具有下面的性質:

  • 每個節點都只能是紅色或者黑色
  • 根節點是黑色
  • 每個分葉節點(NIL節點,注nil 節點就是空節點,在紅/黑樹狀結構的實現中,nil 節點代替二叉樹中的NULL)是黑色的。
  • 如果一個結點是紅的,則它兩個子節點都是黑的。也就是說在一條路徑上不能出現相鄰的兩個紅色結點。
  • 從任一節點到其每個葉子的所有路徑都包含相同數目的黑色節點。

 

針對Java集合類的小總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.