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


集合相關的類有一大堆,一般也只用到常用的方法增刪改查,而且它它們的方法名也基本一樣,所以一直都不知道什么時候用什么集合,

今天趁有空特意從網上整理資料方便日后回憶。

一、List:、有順序以線性方式存儲,可以存放重復對象

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

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

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

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

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

 

二、Set:無順序,不包含重復的元素

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

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

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

 

三、Map:鍵必須是唯一

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

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

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

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

WeakHashMap:改進的HashMap,它對key實行“弱引用”,如果一個key不再被外部所引用,那么該key可以被GC回收。

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

 

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

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

SparseArray的使用基本與List一樣,在些不詳細解說,大家可以看http://blog.csdn.net/xyz_fly/article/details/793194

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM