ArrayList和LinkedListArrayList實現了List介面,以陣列的方式來實現的,因此對於快速的隨機取得物件的需求,使用ArrayList實現執行效率上會比較好。LinkedList是採用連結串列的方式來實現List介面的,因此在進行insert和remove動作時效率要比ArrayList高。適合用來實現Stack(堆疊)與Queue(佇列)。HashTable和HashMap共性:都實現了Map介面。區別:Hashtable繼承自Dictionary類,而HashMap繼承自AbstractMap類。(2)執行緒安全性不同Hashtable的方法是Synchronize的,而HashMap中的方法在預設情況下是非Synchronize的。(3)提供contains方法HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey,因為contains方法容易讓人引起誤解。(4)key和value是否允許null值Hashtable中,key和value都不允許出現null值。HashMap中,null可以作為鍵,這樣的鍵只有一個;可以有一個或多個鍵所對應的值為null。(5)兩個遍歷方式的內部實現上不同HashMap使用了 Iterator;Hashtable使用 Iterator,Enumeration兩種方式 。(6)hash值不同雜湊值的使用不同,HashTable直接使用物件的hashCode。而HashMap重新計算hash值。(7)內部實現使用的陣列初始化和擴容方式不同HashTable在不指定容量的情況下的預設容量為11,增加的方式是 old*2+1;而HashMap為16,Hashtable不要求底層陣列的容量一定要為2的整數次冪,而HashMap則要求一定為2的整數次冪。
ArrayList和LinkedListArrayList實現了List介面,以陣列的方式來實現的,因此對於快速的隨機取得物件的需求,使用ArrayList實現執行效率上會比較好。LinkedList是採用連結串列的方式來實現List介面的,因此在進行insert和remove動作時效率要比ArrayList高。適合用來實現Stack(堆疊)與Queue(佇列)。HashTable和HashMap共性:都實現了Map介面。區別:Hashtable繼承自Dictionary類,而HashMap繼承自AbstractMap類。(2)執行緒安全性不同Hashtable的方法是Synchronize的,而HashMap中的方法在預設情況下是非Synchronize的。(3)提供contains方法HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey,因為contains方法容易讓人引起誤解。(4)key和value是否允許null值Hashtable中,key和value都不允許出現null值。HashMap中,null可以作為鍵,這樣的鍵只有一個;可以有一個或多個鍵所對應的值為null。(5)兩個遍歷方式的內部實現上不同HashMap使用了 Iterator;Hashtable使用 Iterator,Enumeration兩種方式 。(6)hash值不同雜湊值的使用不同,HashTable直接使用物件的hashCode。而HashMap重新計算hash值。(7)內部實現使用的陣列初始化和擴容方式不同HashTable在不指定容量的情況下的預設容量為11,增加的方式是 old*2+1;而HashMap為16,Hashtable不要求底層陣列的容量一定要為2的整數次冪,而HashMap則要求一定為2的整數次冪。