Java List詳解,面試中應該如何解答關於List的問題


對於面試,我們在介紹Java的List的時候,一般需要介紹到,什么是List?List包括什么?各自在用法上有什么區別,在存儲上有什么區別?List需要注意什么?把這些問題串起來,我們可以這樣介紹:

關於我對Java的List的介紹:(什么是List?)Java的List是一個接口,繼承自Collections接口,不能直接進行對象的創建,(List包括什么?)它的具體實現類常見的有ArrayList和LinkedList,分別是數組和鏈表這兩種數據結構的實現,這的鏈表是一個雙向鏈表,LinkIterator可以進行雙向遍歷。我們可以方便的將任何數據類型(類的對象)放在List這樣的容器里面,當然,需要保證所有的數據都具有同樣的數據類型或者是同一個類的對象。(各自在用法和存儲上有什么區別?)對於ArrayList和LinkedList的使用區別主要體現在數組和鏈表的數據結構用法區別上,前者在內存中是連續存儲的,所以隨機訪問速度很快,遍歷和查找會比較方便;而后者是一個接一個連起來的,在內存中的分布是非連續的,由於鏈表的特殊結構,它對鏈表中間的數據進行修改,插入和刪除等操作都很快,也比較方便。當然這里指的是中間的數據,如果我們需要對List的尾元素進行頻繁刪除和插入操作,還是ArrayList的效率比較高的。兩種List對於內存的擴展方式也是不同的,ArrayList可以進行初始化Capacity的配置,在之后如果數據長度超過了當前的capacity,ArrayList會再分配當前的capacity/2的容量,以此類推;當需要插入大量元素時,在插入前可以調用ensureCapacity方法來增加ArrayList的容量以提高插入效率。當然,ArrayList也是可以自定義如何進行內存的擴展的(方法改為了private,現在不行了),由於內存擴展時需要進行復制操作,所以使用的時候如果知道預期的List大小最好自己先指定。LinkedList在內存中是分散的,所以添加元素的時候跟capacity沒什么關系。需要注意的是:。。。

推薦鏈接:Java List詳解


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM