1. 程式人生 > >常用物件API(ArrayList,Vector,LinkedList的儲存效能和特性,HashMap和HashTable的區別)

常用物件API(ArrayList,Vector,LinkedList的儲存效能和特性,HashMap和HashTable的區別)

ArrayList,Vector,LinkedList的儲存效能和特性:

ArrayList和Vector都是使用陣列的方式來儲存資料,此陣列元
素數大於實際儲存的資料以便增加和插入元素, 它們都允許直接按序
號索引元素, 但是插入元素要涉及陣列元素移動等記憶體操作, 所以索
引資料快而插入資料慢,Vector 由於使用了 synchronized 方法(線
程安全) ,通常效能上較 ArrayList 差,而 LinkedList 使用雙向連結串列
實現儲存, 按序號索引資料需要進行前向或後向遍歷, 但是插入資料
時只需要記錄本項的前後項即可,所以插入速度較快。

HashMap和HashTable的區別:

二者都實現了 Map 介面,是將惟一鍵對映到特定的值上;
主要區別在於:
1)HashMap 沒有排序,允許一個 null 鍵和多個 null 值 , 而
Hashtable 不允許;
2)HashMap 把 Hashtable 的 contains 方 法 去 掉 了 , 改 成
containsvalue 和 containsKey, 因為 contains 方法容易讓人引起誤解;
3)Hashtable 繼承自 Dictionary 類,HashMap 是 Java1.2 引進的
Map 介面的實現;
4)Hashtable 的方法是 Synchronize 的,而 HashMap 不是,在多
個執行緒訪問 Hashtable 時,不需要自己為它的方法實現同步, 而
HashMap 就必須為之提供外同步。 Hashtable 和 HashMap 採用 的
hash/rehash 演算法大致一樣,所以效能不會有很大的差異。