LinkedList簡介

LinkedList簡介

  1. LinkedList基于雙向鏈表實現(xiàn)
  2. LinkedList相對于Arraylist來說,get和set等隨機(jī)訪問會比較慢,LinkedList需要移動指針框弛;add和remove會比較快荣刑。
  3. LinkedList類還為在列表開頭和結(jié)尾的get症杏,remove,insert元素提供統(tǒng)一的命名方法搅吁,這些操作允許將鏈表用做堆棧、隊列或者雙端隊列虽界。此類實現(xiàn) Deque 接口炫加,為 add窟哺、poll 提供先進(jìn)先出隊列操作泻轰,以及其他堆棧和雙端隊列操作。
  4. 非線程安全且轨,不同步浮声。

定義

LinkedList集成AbstractSequentialList,實現(xiàn)了List旋奢,Deque泳挥,Cloneable,Serializable接口至朗。AbstractSequentialList提供了骨干實現(xiàn)屉符。Deque一個線性 collection,支持在兩端插入和移除元素锹引,定義了雙端隊列的操作矗钟。

源碼分析

jdk1.7.0_71

//節(jié)點個數(shù)
transient int size = 0;
//前驅(qū)節(jié)點
transient Node<E> first;
//后繼節(jié)點
transient Node<E> last;

無參構(gòu)造

public LinkedList() {}

根據(jù)其他容器進(jìn)行構(gòu)造

public LinkedList(Collection<? extends E> c) {}

getFirst()/getLast() 獲取第一個/獲取最后一個

public E getFirst() {}
public E getLast() {}

removeFirst()/removeLast() 刪除第一個/刪除最后一個

public E removeFirst() {}
public E removeLast() {}

addFirst(E e)/addLast(E e) 添加到頭/尾

public void addFirst(E e) {}
public void addLast(E e) {}

是否包含指定的元素

public boolean contains(Object o) {
    return indexOf(o) != -1;
}

指定元素的位置索引

public int indexOf(Object o) {}

指定元素的最后的位置索引

public int lastIndexOf(Object o) {}

list的大小

public int size() {
        return size;
}

add() 添加到末尾

public boolean add(E e) {}

remove(Object o)/removeFirstOccurrence(Object o) 移除第一個o

public boolean remove(Object o) {}

public boolean removeFirstOccurrence(Object o){}

addAll(Collection<? extends E> c) 添加到list結(jié)尾

public boolean addAll(Collection<? extends E> c) {}

addAll(int index, Collection<? extends E> c) 指定的位置以后添加全部

public boolean addAll(int index, Collection<? extends E> c) {}

clear() 清空

public void clear() {}

get(int index) 獲取指定位置的元素

public E get(int index) {}

指定位置替換成新元素,返回舊元素

public E set(int index, E element) {}

add(int index, E element)指定位置插入指定元素

public void add(int index, E element) {}

remove(int index) 移除指定位置的元素

public E remove(int index) {}

peek()/peekFirst() 獲取list頭

public E peek() {}

public E peekFirst() {}

element() 獲取list頭

public E element() {}

poll()/pollFirst() 獲取list頭,并刪除

public E poll() {}

public E pollFirst() {}

remove() 刪除第一個

public E remove() {}

offer(E e)/offerLast(E e) 添加e到尾部

public boolean offer(E e) {}

public boolean offerLast(E e) {}

offerFirst(E e)/push(E e) 添加e到頭部

public boolean offerFirst(E e) {}

public void push(E e){}

peekLast() 獲取list尾

public E peekLast() {}

pollLast() 獲取list尾,并刪除

public E pollLast

pop() 刪除頭

public E pop(){}

removeLastOccurrence(Object o)從后面開始刪除第一個匹配的元素

public boolean removeLastOccurrence(Object o) {}

listIterator(int index)從指定的位置開始返回一個listIterator

public ListIterator<E> listIterator(int index) {}

descendingIterator() 逆序迭代器

public Iterator<E> descendingIterator() {
        //內(nèi)部類
        return new DescendingIterator();
    }

clone() 淺拷貝

public Object clone() {}

toArray() 轉(zhuǎn)換成Object數(shù)組

public Object[] toArray() {}

toArray(T[] a) 轉(zhuǎn)換成指定類型的數(shù)組

public <T> T[] toArray(T[] a) {
        if (a.length < size)
            a = (T[])java.lang.reflect.Array.newInstance(
                                a.getClass().getComponentType(), size);
        int i = 0;
        Object[] result = a;
        for (Node<E> x = first; x != null; x = x.next)
            result[i++] = x.item;

        if (a.length > size)
            a[size] = null;

        return a;
    }

參考

https://www.zybuluo.com/pastqing/note/208830

http://blog.csdn.net/u013256816/article/details/50916689

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嫌变,隨后出現(xiàn)的幾起案子吨艇,更是在濱河造成了極大的恐慌,老刑警劉巖腾啥,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件东涡,死亡現(xiàn)場離奇詭異冯吓,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)软啼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門桑谍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來延柠,“玉大人祸挪,你說我怎么就攤上這事≌昙洌” “怎么了贿条?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長增热。 經(jīng)常有香客問我整以,道長,這世上最難降的妖魔是什么峻仇? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任公黑,我火速辦了婚禮,結(jié)果婚禮上摄咆,老公的妹妹穿的比我還像新娘凡蚜。我一直安慰自己,他們只是感情好吭从,可當(dāng)我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布朝蜘。 她就那樣靜靜地躺著,像睡著了一般涩金。 火紅的嫁衣襯著肌膚如雪谱醇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天步做,我揣著相機(jī)與錄音副渴,去河邊找鬼。 笑死全度,一個胖子當(dāng)著我的面吹牛佳晶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播讼载,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼轿秧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了咨堤?” 一聲冷哼從身側(cè)響起菇篡,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎一喘,沒想到半個月后驱还,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗜暴,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年议蟆,在試婚紗的時候發(fā)現(xiàn)自己被綠了闷沥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡咐容,死狀恐怖舆逃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情戳粒,我是刑警寧澤路狮,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站蔚约,受9級特大地震影響奄妨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜苹祟,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一砸抛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧树枫,春花似錦直焙、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至舔清,卻和暖如春丝里,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背体谒。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工杯聚, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抒痒。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓幌绍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親故响。 傳聞我的和親對象是個殘疾皇子傀广,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容