Java Collecttion Framework 備忘點

來源:互聯網
上載者:User

標籤:under   ble   png   image   分段   尋找   而不是   lis   集合   

最頂端是兩個介面,集合和映射——  Collection<T>  /  Map<K, V>

 

List 列表        保持插入順序

  ArrayList      擅長隨機讀

  LinkedList       增、刪

  Arrays$ArrayList    定長List,功能有限

 

Set 集

  HashSet      尋找最快

  TreeSet       升序排序

  LinkedHashSet   保持插入順序

 

Queue 隊列

  LinkedList     也實現了Queue介面,

  PriorityQueue    保持插入順序

 

Map 映射

  HashMap     散列映射,速度最快

  LinkedHashMap  保持插入順序

  WeakHashMap   鍵不再使用時,值回報GC

  TreeMap      升序排序

 

根據詞綴總結一下

List和帶“Linked”的實現都能保持插入順序。

帶"Hash"的實現速度都比較快,特別是讀。

帶“Tree”的實現都能在插入是進行排序。

 

以下的實現幾乎沒有理由再去使用

  Vector   最舊的List實現。幾乎每個對外方法都是synchronized的,內部數組每次擴容時增長一倍,而不是像ArrayList一樣增長50%。

  Hashtable  最舊的Map實現。幾乎每個對外方法都是synchronized的,使用Enumeration進行迭代,contains效能太差。

  Stack    廢棄API,LinkedList完全可以取代它。

 

選擇哪個實現?

  List    預設選擇ArrayList,需要大規模的增刪時,選擇LinkedList,需要安全執行緒時,選擇Collections.synchronizedList()。

  Set    預設選擇HashSet,對排序、保持插入順序有需求時,按需選擇,需要安全執行緒時,選擇Collections.synchronizedSet()或Collections.synchronizedSortSet(),

  Queue   預設選擇LinkedList,對保持插入順序有需求時,選擇PriorityQueue。

  Map    預設選擇HashMap,對排序、保持插入順序有需求時,按需選擇,需要安全執行緒時,選擇Collections.synchronizedMap()或Collections.synchronizedSortMap(),

 

線程相關的三種版本

synchronizedMap為整個散列表加鎖;ConcurrentHashMap採用分段鎖,將散列表分割成16個散列桶,每個線程只鎖一個桶。

Java Collecttion Framework 備忘點

聯繫我們

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