Java知識點總結(Java容器-LinkedList)
阿新 • • 發佈:2019-02-19
LinkedList
底層實現是雙向迴圈連結串列,所以增刪元素效率高,查詢慢。執行緒安全
ArrayList和LinkedList比較
- ArrayList是實現了基於動態陣列的資料結構,LinkedList基於連結串列的資料結構
- 對於水機訪問get和set,ArrayList覺得優於LinkedList,因為LinkedList要移動指標
- 對於新增和刪除操作add和remove,LinkedList比較佔優勢,因為ArrayList要移動資料
這一點要看實際情況的。若只對單條資料插入或刪除,ArrayList的速度反而優於LinkedList。但若是批量隨機的插入刪除資料,LinkedList的速度大大優於ArrayList. 因為ArrayList每插入一條資料,要移動插入點及之後的所有資料。
手寫LinkedList
public class MyLinkedList /*implements List<E>*/{
private Node first;
private Node last;
private int size ;
//新增元素
publicvoidadd(Object obj) {
if (first == null) {
Node n = new Node(null,obj,null);
first = n;
last = n;
}else {
//直接往last後增加新的節點
Node n = new Node(last, obj, null);
last.setNext(n);
last = n;
}
size++;
}
//獲取元素
publicObjectget(int index) throws Exception {
return getNode(index).getObj();
}
//刪除元素
publicboolean remove(int index) throws Exception {
boolean flag = false;
Node temp = getNode(index);
if (temp!=null) {
temp.getPreview().setNext(temp.getNext());
temp.getNext().setPreview(temp.getPreview());
size--;