ArrayList與LinkedList的區別

一 對於處理一列數據項,Java提供了兩個類ArrayList和LinkedList,ArrayList的內部實現是基於內部數組 Object[],所以從概念上講, ArrayList
更象數組,但LinkedList的內部實現是基於一組連接的記錄,所以, LinkedList
更象一個鏈表結構,所以,它們在性能上有很大的差別。從上面的分析可知,在ArrayList的前面或中間插入數據時,你必須將其後的所有數據相應的後移,這樣必然要花費較多時間,所以,當你的操作是在一列數據的後面添加數據而不是在前面或中間,並且需要 隨機地訪
問其中的元素時,使用ArrayList會提供比較好的性能,而訪問鏈表中的某個元素時,就必須從鏈表的一端開始沿着連接方向一個一個元素地去查找,直到找到所需的元素爲止,所以,當你的操作是在一列數據的前面或中間添加或刪除數據,並且按照
順序訪問 其中的元素時,就應該使用LinkedList了。 如果在編程中,1,2兩種情形交替出現,這時,你可以考慮使用List這樣的通用接口,而不用關心具體的實現,在具體的情形下,它的性能由具體的實現來保證。LinkedList的用法介紹:Linkedlist的addFirst(object)方法,是把對象加入到鏈表的第一個位置,如果有連續的對象加入則最後加入的對象的序號爲1。如果用addLast()方法則第一個加入的對象的序號爲1。如果要用GetFirst或GetLast方法取得已存入的連續對象,則需要用相應的addLast和addFirst方法保證鏈表的結構。add方法相當於addLast方法。配置集合類的初始大小 在Java集合框架中的大部分類的大小是可以隨着元素個數的增加而相應的增加的,我們似乎不用關心它的初始大小,但如果我們考慮類的性能問題時,就一定要考慮儘可能地設置好集合對象的初始大小,這將大大提高代碼的性能。 比如,Hashtable缺省的初始大小爲101,載入因子爲0.75,即如果其中的元素個數超過75個,它就必須增加大小並重新組織元素,所以,如果你知道在創建一個新的Hashtable對象時就知道元素的確切數目如爲110,那麼,就應將其初始大小設爲110/0.75=148,這樣,就可以避免重新組織內存並增加大小。 考慮ArrayList與LinkedList的存儲結構有上有什麼不同。ArrayList不能直接獲取容器中的對象。ArrayList的get方法爲什麼返回的是Iterator接口。
二: ArrayList 和LinkedList 都繼承了List 接口,具有相同的行爲,但是它們對某些操作的性能缺有着天壤之別。ArrayList是以順序表的方式來存存儲數據的,而LinkedList是鏈表的實現。下面來看一下倆種數據結構的區別: 順序表 分配方式:靜態分配。程序執行之前必須明確規定存儲規模。若線性表長度n變化較大,則存儲規模難於預先確定估計過大將造成空間浪費,估計太小又將使空間溢出機會增多。
存儲密度:<1 存取方法:順序存取結構,鏈表中的結點, 需從頭指針起順着鏈掃描才能取得。
插入刪除操作:在鏈表中的任何位置上進行插入和刪除,都 只需要修改指針。對於頻繁進行插入和刪除的線性表,宜採用鏈表做存儲結構。若表的插入和刪除主要發生在表的首尾兩端,則採用尾指針表示的單循環鏈表爲宜 由上面的比較可以得出結論: 進行查找,很少做插入和刪除操作時或只用來存儲數據時,採用ArrayList爲宜, 對於頻繁進行插入和刪除的線性表,宜採用LinkedList。

發佈了13 篇原創文章 · 獲贊 1 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章