Java 集合常見面試題

1、ArrayList和LinkedList區別?

ArrayList是容量可以改變的非線程安全集合。內部實現使用數組進行存儲,集合擴容時會創建更大的數組空間,把原有數據複製到新數組中。ArrayList支持對元素的快速隨機訪問,但是插入與刪除時速度通常很慢,因爲這個過程很有可能需要移動其他元素。

LinkedList的本質是雙向鏈表。與ArrayList相比,LinkedList的插入和刪除速度更快,但是隨機訪問速度則很慢。測試表明,對於10萬條的數據,與ArrayList相比,隨機提取元素時存在數百倍的差距。除繼承AbstractList抽象類外,LinkedList還實現了另一個接口Deque,即double-ended queue。這個接口同時具有隊列和棧的性質。LinkedList包含3個重要的成員:size、first、last。size是雙向鏈表中節點的個數。first和last分別指向第一個和最後一個節點的引用。LinkedList的優點在於可以將零散的內存單元通過附加引用的方式關聯起來,形成按鏈路順序查找的線性結構,內存利用率較高。【1】

......

 

 

 

 

 

 

 

【1】《碼出高效:Java 開發手冊》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章