標籤:
----------android培訓、java培訓、java學習型技術部落格、期待與您交流!------------ 一、關於java中的集合類 首先看一下,大致的架構流程圖 通過這些我們可以看出來,通常我們經常採用的vector、arraylist、hashset,treeset,hashmap,hashtable,treemap、linkedlist類關於vector和arraylist對比,vector是安全執行緒的,vector通過遍曆,效能更高。
ArrayList和Vector功能類似,
Vector從Java 1.0起就存在,ArrayList從Java 1.2起才存在,較新。
所以Vector在JavaME、Card等各種微小版本都可以使用,而ArrayList不能
ArrayList不具備線程同步的安全性,但速度較快。
Vector具備安全執行緒。
而對於hashmap和hashtable
Hashtable和HashMap類有三個重要的不同之處。第一個不同主要是曆史原因。Hashtable是基於陳舊的Dictionary類的,HashMap是Java 1.2引進的Map介面的一個實現。
也許最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。這就意味著,雖然你可以不用採取任何特殊的行為就可以在一個多線程的應用程式中用一個Hashtable,但你必須同樣地為一個HashMap提供外同步。一個方便的方法就是利用Collections類的靜態synchronizedMap()方法,它建立一個安全執行緒的Map對象,並把它作為一個封裝的對象來返回。這個對象的方法可以讓你同步訪問潛在的HashMap。這麼做的結果就是當你不需要同步時,你不能切斷Hashtable中的同步(比如在一個單線程的應用程式中),而且同步增加了很多處理費用。
第三點不同是,只有HashMap可以讓你將空值作為一個表的條目的key或value。HashMap中只有一條記錄可以是一個空的key,但任意數量的條目可以是空的value。這就是說,如果在表中沒有發現搜尋鍵,或者如果發現了搜尋鍵,但它是一個空的值,那麼get()將返回null。如果有必要,用containKey()方法來區別這兩種情況。
一些資料建議,當需要同步時,用Hashtable,反之用HashMap。但是,因為在需要時,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基於一個陳舊的類的,所以有人認為,在各種情況下,HashMap都優先於Hashtable。
二、對於java集合架構
他們之間的比較:
| |
|
是否有序 |
是否允許元素重複 |
| Collection |
否 |
是 |
| List |
是 |
是 |
| Set |
AbstractSet |
否 |
否 |
| |
HashSet |
| |
TreeSet |
是(用二叉排序樹) |
| Map |
AbstractMap |
否 |
使用key-value來映射和儲存資料,key必須唯一,value可以重複 |
| |
HashMap |
| |
TreeMap |
是(用二叉排序樹) |
、
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
黑馬程式員——JAVA基礎——集合