日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > JDK源碼-LinkedList源碼

JDK源碼-LinkedList源碼

來源:程序員人生   發布時間:2015-02-06 09:11:02 閱讀次數:2418次
1,LinkedList:
    ⑴,實現了List接口,允許null元素。LinkedList還為鏈表開頭和結尾提供了操作,所以使用LinekedList可以用作堆棧、列隊或雙端隊列。
    ⑵,LinkedList實現Deque接口,提供了基于隊列的先進先出序列的實現。
    ⑶,所有的操作都是依照兩重鏈表來實現的。
    ⑷,操作為非線程安全的,如果多個線程中,存在修改鏈表結構的操作,則必須保證線程安全。
2,LinkedList繼承AbstractSequentialList實現Lise、Deque、Cloneable、Serializable接口。
public class LinkedList<E>
extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, java.io.Serializable
    ⑴,AbstractSequentialList繼承AbstractList,AbstractList屬于ArrayList的父類。
    ⑵,Deque繼承自Queue,定義了隊列接口操作。Queue接口繼承Collection接口。
 3,AbstractSequentialList類詳解:
    此類提供了List接口的主要實現。
    要實現1個列表,程序猿只需要擴大此類,并提供listIterator和size方法的實現便可。對不可修改的列表,只需要實現迭代器對應的方法便可。
    該類主要方法有:get   set   add  remove  addAll  iterator  listIterator方法。
    其中,get   set   add  remove  addAll方法均是基于 iterator  listIterator方法實現。
public E remove(int index) {
try {
ListIterator<E> e = listIterator(index);
E outCast = e.next();
e.remove();
return outCast;
} catch (NoSuchElementException exc) {
throw new IndexOutOfBoundsException("Index: "+index);
}
}
public E set(int index, E element) {
try {
ListIterator<E> e = listIterator(index);
E oldVal = e.next();
e.set(element);
return oldVal;
} catch (NoSuchElementException exc) {
throw new IndexOutOfBoundsException("Index: "+index);
}
}
3,LinkedList成員變量:
    ⑴,header:Entry屬性的變量。Entry內部類,定義了1個鏈表的數據結構。
private static class Entry<E> {
E element;
Entry<E> next;
Entry<E> previous;
 
Entry(E element, Entry<E> next, Entry<E> previous) {
this.element = element;
this.next = next;
this.previous = previous;
}
}
    ⑵,size:LinkedList元素長度。
4,第1類方法,對Entry對象的操作:
    ⑴,addBefore(E e, Entry<E> entry):增加e元素至entry鏈表中。
private Entry<E> addBefore(E e, Entry<E> entry) {
Entry<E> newEntry = new Entry<E>(e, entry, entry.previous);//生成新的Entry對象,Entry對象的前置指向當前entry的前置元素。
newEntry.previous.next = newEntry;
newEntry.next.previous = newEntry;
size++;
modCount++;
return newEntry;
}
   插入操作可參考下圖:

主要操作觸及,new元素的p指向了old元素,所以下1步將old元素的next指向new元素,然后獎new元素的next的p元素指向new元素本身。基本就是單鏈表的刪除操作而已。
 ⑵,remove:鏈表元素的刪除
private E remove(Entry<E> e) {
if (e == header)
throw new NoSuchElementException();
 
E result = e.element;
e.previous.next = e.next;
e.next.previous = e.previous;
e.next = e.previous = null;
e.element = null;
size--;
modCount++;
return result;
}
remove操作,則是將e元素的p指向e的next,將e的next的p指向e的p。使
e的p和n都指向為null,將e元素指向為null。
5,第2類方法,構造方法。
public LinkedList():默許構造函數,初始化鏈表頭。
public LinkedList() {
header.next = header.previous = header;
}
public LinkedList(Collection<? extends E> c):構造List包括c中所有元素。
public LinkedList(Collection<? extends E> c) {
this();
addAll(c);
}
6,單鏈表的基本操作:
    ⑴,add:
public boolean add(E e) {
addBefore(e, header);
return true;
}
    ⑵,remove(Object o):移除對應元素。
public boolean remove(Object o) {
if (o==null) {
for (Entry<E> e = header.next; e != header; e = e.next) {
if (e.element==null) {
remove(e);
return true;
}
}
} else {
for (Entry<E> e = header.next; e != header; e = e.next) {
if (o.equals(e.element)) {
remove(e);
return true;
}
}
}
return false;
}
我們可以看到如果元素為null直接用的==判斷相等,否則調用對應對象的equals方法移除。
7,隊列方法:
    ⑴.addFirst(E e):在鏈表開頭增加元素。
public void addFirst(E e) {
addBefore(e, header.next);
}
    ⑵,addLast:在鏈表末尾增加元素
public void addLast(E e) {
addBefore(e, header);
}
    ⑶,removeFirst:首元素出隊。
public E removeLast() {
return remove(header.previous);
}
8,ListIterator:構造適用與LinkedList的迭代器。
private class ListItr implements ListIterator<E>
private Entry<E> lastReturned = header;
private Entry<E> next;
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日日干狠狠干 | 午夜精品 | 99免费精品| 免费a在线看| 国产在线精品一区二区在线播放 | 精品少妇一区二区三区日产乱码 | 国产精品国产a级 | 国产精品美女久久久久av超清 | 久久久久久久一区二区 | 哪里有毛片网站 | 亚洲国产97在线精品一区 | 不卡一二三区 | 午夜国产一区 | 成人精品 | 国产黄色网 | 91久久国产综合久久91精品网站 | 中文字幕日本在线 | 精品久久久一区二区 | 国产亚洲精品久 | 亚洲精品自拍偷拍 | 免费a观看 | 久久国产欧美一区二区三区精品 | 免费亚洲网站 | 午夜精品久久久久久久久久久 | aaa综合国产 | 欧美电影一区二区 | 66精品 | 国产精品一区二区三区av | 污视频在线观看免费 | 免费不卡视频 | 国产精品日韩 | 亚洲精品一区二区三区在线观看 | 国产色网| 国产精品视频免费观看 | 国产精品久久久久久影视 | 日日精品| 成人在线免费观看小视频 | 99在线视频观看 | 日本精品一区二区三区四区的功能 | 免费日韩视频 | 日本天堂在线观看 |