ArrayList和LinkedList的區(qū)別?
ArrayList
1)只能裝入引用對象(基本類型要轉(zhuǎn)換為封裝類);
2)線程不安全;
3)底層由數(shù)組實現(xiàn)(順序表),因為由順序表實現(xiàn),所以會具備順序表的特點,如:需要聲明長度、超出長度時需要進(jìn)行擴(kuò)容、不適合頻繁的移動刪除元素、檢索元素快;
4)capacity默認(rèn)為10,超出時,capacity自動增長0.5倍(oldCapacity >> 1)。
Vector:
1)只能裝入引用對象(基本類型要轉(zhuǎn)換為封裝類);
2)Vector通過synchronized方法保證線程安全;
3)底層也由數(shù)組實現(xiàn);
4)capacity默認(rèn)為10(在構(gòu)造方法中),超出時增長capacityIncrement的量,capacityIncrement小于等于0時,則增長1倍((capacityIncrement > 0) ? capacityIncrement : oldCapacity)。
LinkedList
1)只能裝入引用對象(基本類型會轉(zhuǎn)換為封裝類);
2)線程不安全;
3)底層實現(xiàn)為鏈表,具備鏈表的特點,如:不用聲明長度、檢索性能較差,但是插入移動刪除較快。
4)鏈表通過Node對象實現(xiàn)。