Java學習筆記之LinkedList

2021-09-06 21:46:01 字數 3098 閱讀 1594

linkedlist從jdk1.2開始使用,linkedlist實現了list介面和deque介面,同時實現了列表和雙向列表。並實現了serializable序列化介面。

node:

private

static

class

node

}public boolean addall(int index, collection<? extends e> c) ;public

boolean

addall

(int index, collection<

?extends

e> c)

else

for(object o : a)

//如果當前節點為null,last為最後記錄的節點。

if(succ == null)

else

//size為合併大小,操作次數++

size += numnew;

modcount++

;return

true

;}

由此可見,linkedlist新增資料就是新增了乙個節點關聯的node

private void linkfirst(e e);

private

void

linkfirst

(e e)

由此可見,呼叫linkfirst方法,只是新增了乙個和之前first位置關聯的node,集合大小會+1。

void linklast(e e);

void

linklast

(e e)

和linkfirst一樣,執行此操作後集合大小都會+1。

void linkbefore(e e, node succ);

void

linkbefore

(e e, node

succ)

由此可見,呼叫此方法就是把新增加元素新增到當前元素前面,等於在當前元素前面的元素數量+1。

private e unlinkfirst(node f);

private e unlinkfirst

(node

f)

此方法是private方法,僅如果頭元素為非空的時候才會呼叫。主要就是把刪除的元素內部變數置為null,然後交給gc**。

private e unlinklast(node l);

private e unlinklast

(node

l)

此方法是private方法,僅如果尾部元素為非空的時候才會呼叫。主要就是把刪除的元素內部變數置為null,然後交給gc**。

e unlink(node x);

e unlink

(node

x)else

//如果下乙個節點為null,則為最後乙個,那麼把最後乙個節點換乘prev

if(next == null)

else

//當前元素置為null,size-1,操作次數-1,返回刪除的元素。

x.item = null;

size--

; modcount++

;return element;

}

這裡的書寫習慣不同,看來不像是同乙個人寫的呢。此方法是刪除非空元素的方法,主要是替換前後節點的關聯資料,交給gc。

public e getfirst();

public e getfirst()

根據first節點,獲取頭部元素。

public e getlast();

public e getlast()

根據last節點,獲取尾部元素。

public boolean add(e e);

public

boolean

add(e e)

從原始碼可以看出,實際上add是呼叫了linklast方法,新增到了集合的尾部。

public boolean remove(object o);

public

boolean

remove

(object o)

}//如果要刪除的對像不為 null

}else}}

//如果沒有匹配到元素,返回false

return

false

;}

重點是雙向鍊錶的遍歷方式,剛看原始碼的時候真的沒有想明白怎麼去遍歷。

public void clear();

public

void

clear()

//first和last置為null,size=0,操作次數++

first = last = null;

size =0;

modcount++

;}

node node(int index);
public e set

(int index, e element)

public void add(int index, e element);
public

void

add(

int index, e element)

public int indexof(object o);
public

intindexof

(object o)

//如果指定元素不為null,遍歷雙向鍊錶,匹配到指定元素,返回index,否則index++

}else

}//如果沒有匹配到元素,返回-1

return-1

;}

public int lastindexof(object o);
public

intlastindexof

(object o)

}else

}return-1

;}

Java學習筆記之JOptionPane

你喜歡看定影嗎?自定義詢問 intn joptionpane.showconfirmdialog this,你喜歡藍色嗎?詢問 joptionpane.yes no option intn joptionpane.showconfirmdialog this,你喜歡藍色嗎?詢問 joptionpan...

Java學習筆記之陣列

陣列 概念 同一種型別資料的集合,其實陣列就是乙個容器.陣列的好處 可以自動給陣列中的元素從0開始編號,方便操作這些元素.格式1 元素型別 陣列名 new 元素型別 元素個數 格式2 元素型別 陣列名 new 元素型別 記憶體的劃分 1 暫存器 2 本地方法區 3 方法區 4 棧記憶體 儲存的都是區...

java學習筆記之異常

基礎的就不多說了,說一下容易被忽略的知識點。a 不管有木有出現異常,finally塊中 都會執行 b 當try和catch中有return時,finally仍然會執行 c finally是在return後面的表示式運算後執行的 此時並沒有返回運算後的值,而是先把要返回的值儲存起來,管finally中...