List類的使用

2021-08-09 21:49:01 字數 1079 閱讀 2313

我們常用的list分為以下三種:arraylist、linkedlist、vector。今天,我們就來從原始碼角度分析以下這三種list:

一、arraylist、linkedlist、vector的異同與使用場景

一般來說,arraylist與vector都是使用陣列來儲存,linkedlist是使用雙向鍊錶進行儲存,所以,arraylist和vector查詢元素比較快,因為陣列可以直接根據位置進行定位,而雙向鍊錶還需要根據煉表頭或者鍊錶尾進行遍歷查詢。而在插入元素時,一般來說linkedlist比較快,因為雙向鍊錶只需要找到插入位置的前乙個元素,然後進行插入即可(當然需要更改後乙個元素的前驅),而因為陣列是確定大小的,在尾部新增元素時,arraylist與vector都需要確認一下陣列是否充足,如果不充足,還需要將陣列進行擴大,再將原先的元素重新copy進去,而在中間插入元素時,arraylist與vector,arraylist與vector也需要確認一下陣列是否充足,然後將插入位置的元素整體後移,所以一般來說,在插入元素時,linkedlist更快一些。

二、arraylist、vector原始碼分析與比較

比如add方法:

arraylist:

public

boolean

add(e e)

vector:

public

synchronized

boolean

add(e e)

可以看到,arraylist與vector差別不大,不過vector的add方法是執行緒安全的。

另外,在增加陣列大小的grow()方法中

arraylist:

private

void

grow(int mincapacity)

vector:

private

void

grow(int mincapacity)

可以看到 arraylist 一般是增加自己的一半,而vector是增加自己的一倍。

List類系列(二) List類的list 方法

1.用於將元組轉換為列表 元組與列表是非常類似的,區別在於元組的元素值不能修改,元組是放在括號中,列表是放於方括號中。以下例項展示了 list 函式的使用方法 usr bin python coding utf 8 atuple 123,xyz zara abc alist list atuple ...

Java中list類的使用

1 arraylist為list的重要實現類,list中的元素是有序排列並且可重複的。list的建立 list list new arraylist 2 list的方法 list中元素個數是否為空?list.isempty list是否已經被建立 null list 獲取list的長度 list.s...

python使用List和類的方式構建樹和二叉樹

使用list構建樹 g g h h i i k k e e g,h,i,k d d f f a a d,e b b c c f root root a,b,c print root class btree 二叉樹節點 def init self,value 初始化函式 self.left none ...