深度解析List集合(2)

2021-10-08 12:20:38 字數 3315 閱讀 1424

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