**abstractsequentiallist 繼承自 abstractlist,是 linkedlist 的父類,是 list 介面 的簡化版實現。簡化在 abstractsequentiallist 只支援按次序訪問,而不像 abstractlist 那樣支援隨機訪問。
list 的資料結構就是乙個序列,儲存內容時直接在記憶體中開闢一塊連續的空間,然後將空間位址與索引對應。
deque 表示雙端佇列。雙端佇列是在兩端都可以進行插入和刪除的佇列。deque是乙個比stack和queue功能更強大的介面,它同時實現了棧和佇列的功能。arraydeque和linkelist實現了deque介面。
cloneable介面 是乙個標記介面,也就是沒有任何內容
serializable介面 是啟用其序列化功能的介面。實現j**a.io.serializable 介面的類是可序列化的。沒有實現此介面的類將不能使它們的任意狀態被序列化或逆序列化。
public class linkedlistextends abstractsequentiallistimplements list, deque, cloneable, serializable
}
/**
* 建構函式
*1.無參建構函式linkedlist()
* 2.有參建構函式
* 2.1linkedlist(collection extends e> c)
* 2.2linkfirst(e e)
*///無參構造,size為0
public linkedlist()
//將已有元素的集合collection 的例項新增到 linkedlist 中,呼叫的是 addall() 方法
public linkedlist(collection extends e> c)
//將乙個集合的所有元素新增到鍊錶後面,返回是否成功,成功為 true,失敗為 false。
public boolean addall(collection extends e> c)
//刪除並返回第乙個元素。
public e removefirst() else
}
//刪除首結點
private e unlinkfirst(linkedlist.nodef) else
//size - 1
--this.size;
//增加鍊錶修改次數
++this.modcount;
//返回首結點的數值
return element;
}
public boolean remove(object o)
//刪除某一元素,返回是否成功,成功為 true,失敗為 false。
public boolean remove(object o)
}} else }}
return false;
}
//刪除引數結點
e unlink(linkedlist.nodex) else
//如若要刪除的結點為最後乙個結點
if (next == null) else
//將x設孔
x.item = null;
//size也 - 1
--this.size;
++this.modcount;
//返回被刪除結點的資料
return element;
}
//刪除指定位置的元素。
public e remove(int index)
//返回指定位置的元素。
//返回第乙個元素。
public e getfirst() else
}
//為add,get等操作的提供了查詢並返回結點的功能
linkedlist.nodenode(int index)
//返回index結點
return x;
} else
return x;}}
LinkedList原始碼學習
1.node 每個node,都包含前後兩個,也被前後兩個包含。即 雙向鍊錶結構 private static class node 2.構造 new 不像arraylist,沒做什麼 public linkedlist public linkedlist collection extends e c...
LinkedList 原始碼學習
linkedlist 底層資料結構是乙個雙向鍊錶 鍊錶每個節點我們叫做 node,node 有 prev 屬性,代表前乙個節點的位置,next 屬性,代表後乙個節點的位置 first 是雙向鍊錶的頭節點,它的前乙個節點是 null。last 是雙向鍊錶的尾節點,它的後乙個節點是 null 當鍊表中沒...
LinkedList原始碼學習
1.建構函式 linkedlist 初始化size值為0 linkedlist collection collection 將傳入集合的元素新增到linkedlist的末尾 2.成員變數 transient int size 鍊錶長度 transient node first 首節點 transie...