java常用集合總結

來源:互聯網
上載者:User

1、安全執行緒
安全執行緒就是說多線程訪問同一代碼,不會產生不確定的結果。

2、List類和Set類
List類和Set類是Collection集合介面的子介面。
Set子介面:無序,不允許重複。
List子介面:有序,可以有重複元素。

Set和List對比:
Set:檢索元素效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變。
List:和數組類似,List可以動態增長,尋找元素效率高,插入刪除元素效率低,因為會引起其他元素位置改變。

Set和List具體子類:
Set
|————HashSet:以雜湊表的形式存放元素,插入刪除速度很快。

List
|————ArrayList:動態數組
|————LinkedList:鏈表、隊列、堆棧。

Array和java.util.Vector
Vector是一種老的動態數組,是線程同步的,效率很低,一般不贊成使用。

3、HashMap和HashTable
a.HashMap去掉了HashTable的contains方法,但是加上了containsValue()和containsKey()方法。
b.HashTable同步的,而HashMap是非同步的,效率上比HashTable要高。
c.HashMap允許空索引值,而HashTable不允許。

4、安全執行緒集合類與非安全執行緒集合類
LinkedList、ArrayList、HashSet是非安全執行緒的,Vector是安全執行緒的;
HashMap是非安全執行緒的,HashTable是安全執行緒的;
StringBuilder是非安全執行緒的,StringBuffer是安全執行緒的。

5、集合適用情境
對於尋找和刪除較為頻繁,且元素數量較多的應用,Set或Map是更好的選擇;
ArrayList適用於通過為位置來讀取元素的情境;
LinkedList 適用於要頭尾操作或插入指定位置的情境;
Vector 適用於要安全執行緒的ArrayList的情境;
Stack 適用於安全執行緒的LIFO情境;
HashSet 適用於對排序沒有要求的非重複元素的存放;
TreeSet 適用於要排序的非重複元素的存放;
HashMap 適用於大部分key-value的存取情境;
TreeMap 適用於需排序存放的key-value情境。

聯繫我們

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