List Set Map以及子接口用法總結(轉)

Collection數組

├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap安全

└WeakHashMap多線程

 

 

list 和set 有共同的父類Collection  它們的用法也是同樣的 惟一的不太就是set中不能有相同的元素 list中能夠 序列 集合併發

list和set的用途很是普遍 list能夠徹底代替數組來使用app

map 是獨立的合集 它使用鍵值對的方式來儲存數據 鍵不能有重複的 值能夠用 map不像上邊兩種集合那個用的普遍 不過在servlet 和jsp中 map但是絕對的重中之重 頁面之間傳值全靠mapjsp

 

list有序可重複 set無序不可重複性能

list有arraylist(隨機存取很是高效 便於查找)和linkedlist(便於刪除增長 不方便查找 從第一個開始) vector this

 

 

   arraylist 和 vector區別以下:spa

   arraylist :線程不安全(同時同一個)   高效(一個優勢)      擴容慢 一次擴充以前空間的一半   

   vector:線程安全(容許多個線程一塊兒)  現成安全帶來的較低效率 一次擴充以前空間的一倍線程

                       

    
   

 List Set Map主要方法:

 

List

基本信息
boolean     isEmpty()

int             size()

boolean     contains(Object o)

Iterator<E>     iterator()

增刪改查(序號 以及序號的數據)

void            add(E e)

boolean     remove(Object o)

Entryobject             get(int index)

int             indexOf(Object o) 默認firstindex

int             lastIndexOf(Object o)

操做

Object[]     toArray()  注意是object類型

 

 



Set

基本信息:
boolean     isEmpty()

int             size()

boolean     contains(Object o)

Iterator<E>     iterator()

增刪改查 set沒有任何差 除了迭代其

boolean     add(E e)

boolean     remove(Object o)

操做

Object[]     toArray()

 

 

 

Map
基本信息:contains鍵或者值
int     size()

boolean     isEmpty()

boolean     containsKey(Object key)

boolean     containsValue(Object value)

增刪改查:能夠修改replace
Valueobject             get(Object key)

Valueobject             put(K key, V value)

Valueobject             replace(K key, V value)

Valueobject             remove(Object key)
Removes the mapping for a key from this map if it is present (optional operation).

default boolean     remove(Object key, Object value)
Removes the entry for the specified key only if it is currently mapped to the specified value.



操做:
Set<K>     keySet()  set能夠toarray

Collection<V>     values()

Set<Map.Entry<K,V>>     entrySet()

 

 

 

 

 

Hashtable介紹:

類實現一個哈希表,該哈希表將鍵映射到相應的值。任何非 null 對象均可以用做鍵或值。爲了成功地在哈希表中存儲和獲取對象,用做鍵的對象必須實現 hashCode 方法和 equals 方法。

Hashtable 的實例有兩個參數影響其性能:初始容量 和加載因子。容量 是哈希表中桶 的數量,初始容量 就是哈希表建立時的容量。注意,哈希表的狀態爲 open:在發生「哈希衝突」的狀況下,單個桶會存儲多個條目,這些條目必須按順序搜索。加載因子是對哈希表在其容量自動增長以前能夠達到多滿的一個尺度。初始容量和加載因子這兩個參數只是對該實現的提示。關於什麼時候以及是否調用 rehash 方法的具體細節則依賴於該實現。

 

 

 HashTable和HashMap區別

第一,繼承不一樣。

public class Hashtable extends Dictionary implements Map
public class HashMap  extends AbstractMap implements Map

第二

Hashtable 中的方法是同步的,而HashMap中的方法在缺省狀況下是非同步的。在多線程併發的環境下,能夠直接使用Hashtable,可是要使用HashMap的話就要本身增長同步處理了。由於線程安全的問題,HashMap效率比HashTable的要高。

第三

Hashtable中,key和value都不容許出現null值。

在HashMap中,null能夠做爲鍵,這樣的鍵只有一個;能夠有一個或多個鍵所對應的值爲null。當get()方法返回null值時,便可以表示 HashMap中沒有該鍵,也能夠表示該鍵所對應的值爲null。所以,在HashMap中不能由get()方法來判斷HashMap中是否存在某個鍵, 而應該用containsKey()方法來判斷。

第四,兩個遍歷方式的內部實現上不一樣。

Hashtable、HashMap都使用了 Iterator。而因爲歷史緣由,Hashtable還使用了Enumeration的方式 。

第五

哈希值的使用不一樣,HashTable直接使用對象的hashCode。而HashMap從新計算hash值。

第六

Hashtable和HashMap它們兩個內部實現方式的數組的初始大小和擴容的方式。HashTable中hash數組默認大小是11,增長的方式是 old*2+1。HashMap中hash數組的默認大小是16,並且必定是2的指數。 

相關文章
相關標籤/搜索