java常用集合總結

轉自:http://www.cnblogs.com/linjiqin/archive/2013/05/30/3107785.html

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場景。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章