ArrayList、Vector、LinkedList的區別及其優缺點

ArrayList 和Vector是採用陣列方式儲存資料的,是根據索引來訪問元素的,都可以根據需要自動擴充套件內部資料長度,以便增加和插入元素,都允許直接序號索引元素,但是插入資料要涉及到陣列元素移動等記憶體操作,所以索引資料快插入資料慢,他們最大的區別就是synchronized同步的使用

LinkedList使用雙向連結串列實現儲存,按序號索引資料需要進行向前或向後遍歷,但是插入資料時只需要記錄本項的前後項即可,所以插入數度較快!

如果只是查詢特定位置的元素或只在集合的末端增加、移除元素,那麼使用Vector或ArrayList都可以。如果是對其它指定位置的插入、刪除操作,最好選擇LinkedList

HashMap、HashTable的區別及其優缺點

HashTable 中的方法是同步的 HashMap的方法在預設情況下是非同步的 因此在多執行緒環境下需要做額外的同步機制

HashTable不允許有null值 key和value都不允許,而HashMap允許有null值 key和value都允許 因此HashMap 使用containKey()來判斷是否存在某個鍵

HashTable 使用Enumeration ,而HashMap使用iterator

Hashtable是Dictionary的子類,HashMap是Map介面的一個實現類