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中...