java 集合(list、set、map)的特色

集合相關的類有一大堆,通常也只用到經常使用的方法增刪改查,並且它它們的方法名也基本同樣,因此一直都不知道何時用什麼集合,android

今天趁有空特地從網上整理資料方便往後回憶。數組

1、List:、有順序以線性方式存儲,能夠存放重複對象安全

線程安全方法:List list = Collections.synchronizedList(new LinkedList(...));數據結構

LinkedList:雙向鏈表實現存儲  索引數據慢插入數度較快  線程不安全(比安全性能好)性能

ArrayList:數組方式存儲數據  索引數據快插入數據慢  線程不安全spa

Vector:數組方式存儲數據  索引數據快插入數據慢  線程安全.net

Stack:繼承自Vector,實現一個後進先出的堆棧線程

 

2、Set:無順序,不包含重複的元素設計

HashSet:爲快速查找設計的Set。存入HashSet的對象必須定義hashCode()。  對象

TreeSet: 保存次序的Set, 底層爲樹結構。使用它能夠從Set中提取有序的序列。  

LinkedHashSet:具備HashSet的查詢速度,且內部使用鏈表維護元素的順序(插入的次序)。因而在使用迭代器遍歷Set時,結果會按元素插入的次序顯示。

 

3、Map:鍵必須是惟一

同步方法:Map m = Collections.synchronizedMap(new TreeMap(...));

Hashtable:基於散列表的實現  容許空鍵空值  線程安全

HashMap:基於散列表的實現  容許空鍵空值  線程不安全  (與Hashtable基本一致)

TreeMap: 基於紅黑樹數據結構的實現  不容許空鍵空值  線程不安全

WeakHashMap:改進的HashMap,它對key實行「弱引用」,若是一個key再也不被外部所引用,那麼該key能夠被GC回收。

在除須要排序時使用TreeSet,TreeMap外,都應使用HashSet,HashMap,由於他們的效率更高。

 

4、SparseArray<E>:採用了二分法方式存儲數據(安卓的一個集合類)

android系統建議咱們用SparseArray<E>來代替HashMap<Integer, E>

SparseArray的使用基本與List同樣,在些不詳細解說,你們能夠看http://blog.csdn.net/xyz_fly/article/details/793194

相關文章
相關標籤/搜索