1. 程式人生 > >闡述ArrayList、Vector、LinkedList的儲存效能和特性。

闡述ArrayList、Vector、LinkedList的儲存效能和特性。

ArrayList和Vector都是使用陣列方式儲存資料,此陣列元素數大於實際儲存的資料以便於增加和插入元素,它們都允許直接按序號索引元素,但插入元素要涉及陣列元素移動等記憶體操作,所以索引資料塊而插入資料慢,Vector中的方法由於添加了synchronized修飾,因此是執行緒安全的,但效能上較ArrayList差,因此是java中的遺留容器。LinkedList使用雙向連結串列實現儲存(將記憶體中零散的記憶體單元通過附加的引用關聯起來,形成一個可以按序號索引的線性結構,這種鏈式儲存方式與陣列的連續儲存方式相比,記憶體的利用率更高),按序號索引資料需要向前或向後遍歷,但是插入資料時只需記錄本項的前後項即可,所以插入速度快而索引速度慢。Vector屬於遺留容器(Java早期的版本中提供的容器,除此之外,Hashtable、Dictionary、BitSet、Stack、Properties都是遺留容器),已經不推薦使用,但是由於ArrayList和LinkedListed都是非執行緒安全的,如果遇到多個執行緒操作同一個容器的場景,則可以通過工具類Collections中的synchronizedList方法將其轉換成執行緒安全的容器後再使用(這是對裝潢模式的應用,將已有物件傳入另一個類的構造器中建立新的物件來增強實現)。