java中ArrayList和LinkedList使用注意事項
阿新 • • 發佈:2018-12-25
1. ArrayList和LinkedList的訪問方式
由於ArrayList實現了RandomAccess訪問方式所以在迴圈讀取的時候我們採用下標的方式訪問。
如果我們使用foreach方式訪問(即:偽碼)
for(Object obj : ArrayList){
System.out.println(obj);
}
以上訪問方式會採用Iterator的方式訪問。Iterator採用的方式是記住相鄰元素的位置,然後依次讀取訪問。
這樣就明顯就與RandomAccess相悖,所謂RandomAccess就是可以隨機獲取指定元素位置的資料。
2.LinkedList本來就是列表的資料結構,所以元素與元素之間本來就有關聯關係。所以訪問時,我們可以使用迭代的方式訪問最好不過了。
ps:預設使用get(index),通過閱讀底層程式碼我們發現它是使用查詢的方式獲取指定元素的:就是將整個LinkedList的size除以2,然後與index進行比較
如果大於size/2 則倒序迴圈訪問直到size/2位置查詢指定位置的資料。如果index小於size/2,則順序訪問直到size/2位置找到對應元素。
3.由於ArrayList底層是陣列結構,LinkedList底層是連結串列的資料結構,所以決定了他們更適合用途。
如果涉及到元素的增刪操作比較頻繁時我們使用LinkedList,而涉及到元素的隨機獲取我們使用ArrayList