3 linkedlist
3.1概述
3.2 內部原理解析
資料結構
構造方法
add方法
remove方法
get方法
set方法
3.3 常用方法
4 vector
5 list總結
1,linkedlist
底層通過鍊錶來實現,隨著元素的增加不斷向鍊錶的後端增加節點。
2,linkedlist
是乙個雙向鍊錶,每乙個節點都擁有指向前後節點的引用。相比於arraylist
來說,linkedlist
的隨機訪問效率更低。
它繼承abstractsequentiallist
,實現了list
,deque
,cloneable
,serializable
介面。
1,linkedlist實現list,得到了list集合框架基礎功能;
2,linkedlist實現deque,deque 是乙個雙向佇列,也就是既可以先入先出,又可以先入後出,說簡單點就是既可以在頭部新增元素,也可以在尾部新增元素;
3,linkedlist實現cloneable,得到了clone()方法,可以實現轉殖功能;
4,linkedlist實現serializable,表示可以被序列化,通過序列化去傳輸,典型的應用就是hessian協議。
linkedlist
集合的底層資料結構:
從結構上,我們還看到了linkedlist實現了deque介面,因此,我們可以操作linkedlist像操作佇列和棧一樣~
linkedlist變數就這麼幾個,因為我們操作單向鍊錶的時候也發現了:有了頭結點,其他的資料我們都可以獲取得到了。(雙向鍊錶也同理)
linkedlist的構造方法有兩個:
如果做過鍊錶的練習,對於下面的**並不陌生的~
實際上就是下面那個圖的操作:
可以看到get方法實現就兩段**:
public e get(int index)
我們進去看一下具體的實現是怎麼樣的
set方法和get方法其實差不多,根據下標來判斷是從頭遍歷還是從尾遍歷
public e set(int index, e element)
public class linkedlisttest
/**hello
world
isjiaboyan
*///for迴圈迭代集合:
for(string str:linkedlist)
/**hello
world
isjiaboyan
*///判斷功能:
boolean isempty = linkedlist.isempty();
boolean iscontains = linkedlist.contains("jiaboyan");
//長度功能:
int size = linkedlist.size();
//刪除功能:
linkedlist.remove(0);
linkedlist.remove("jiaboyan");
linkedlist.clear();
system.out.println("linkedlist當前容量:" + linkedlist.size());
// linkedlist當前容量:0}}
vector是jdk1.2的類了,比較老舊的乙個集合類。
vector底層也是陣列,與arraylist最大的區別就是:同步(執行緒安全)
vector是同步的,我們可以從方法上就可以看得出來~
在要求非同步的情況下,我們一般都是使用arraylist來替代vector的了~
如果想要arraylist實現同步,可以使用collections的方法:list list = collections.synchronizedlist(new arraylist(...));,就可以實現同步了~
還有另乙個區別:
arraylist:
linkedlist:
vector:
總的來說:查詢多用arraylist,增刪多用linkedlist。
arraylist增刪慢不是絕對的(在數量大的情況下,已測試):
但一般來說:增刪多還是用linkedlist,因為上面的情況是極端的~
LinkedList集合深度解析
上文講解了arraylist的底層實現原理,感興趣的小夥伴可以去看下,本文重點討論linkedlist集合。首先說下arraylist和linkedlist的區別 相同點都是有序的 arraylist底層資料結構是動態陣列,linkedlist底層資料結構是雙向鍊錶。查詢或者修改的時候,arrayl...
Collection集合,List集合
一 collection集合 a collection 集合 單身漢集合 list 特點 有序,可重複,有索引 arraylist 重點掌握 linkedlist 儲存的元素不可重複,訪問順序一致 set 無序,元素不可重複,元素無索引 hashset 重點掌握 linkedhashset tree...
List集合 Set集合
一 請簡述list介面的特點。v 它是乙個元素訪問有序的集合。例如,存元素的順序是11 22 33。那麼集合中,元素的儲存就是按照11 22 33的順序完成的 v 它是乙個帶有索引的集合,通過索引就可以精確的操作集合中的元素 與陣列的索引是乙個道理 v 集合中可以有重複的元素,通過元素的equals...