java原始碼解析 List

2021-08-29 15:56:13 字數 2255 閱讀 6832

an ordered collection – 有序集合

//list  的類資訊

public

inte***ce

list

extends

collection

//collection 的類資訊--定義基本的method

public

inte***ce

collection

extends

iterable

//iterable 的類資訊---值得一說,jdk1.8+foreach就是此處

public

inte***ce

iterable

arraylist

linkedlist

vector

特點: 遍歷速度快,底層原理陣列,非執行緒安全

原始碼解析:

//無參構造

public

arraylist()

// elementdata 是乙個物件陣列

transient object[

] elementdata;

//defaultcapacity_empty_elementdata 是乙個常量空物件陣列

private

static

final object[

] defaultcapacity_empty_elementdata =

;// crud---add方法

public

boolean

add(e e)..

.//底層原理--還是陣列的copy

arrays.

copyof

(elementdata, newcapacity)

;

由此可見,arraylist 底層資料結構是陣列,crud是陣列的copy,非執行緒安全,但是有陣列的特性,遍歷速度快

特點: 更新速度快,底層原理鍊錶,非執行緒安全

原始碼解析:

//無參構造

public

linkedlist()

// 關鍵成員變數

//陣列長度

transient

int size =0;

//鍊錶第乙個元素

transient node

first;

//鍊錶最後乙個元素

transient node

last;

//crud方法--add

public

boolean

add(e e)..

.void

linklast

(e e)

由此可見,arraylist 底層資料結構是鍊錶,crud是改變鍊錶的上下指向,所以更新效率高於陣列,同時也是非執行緒安全

特點: 遍歷速度快,底層原理陣列,執行緒安全

原始碼解析:

//無參構造

public

vector()

// this(10);幹了什麼

this

.elementdata =

newobject[10

];this

.capacityincrement =10;

//elementdata 是乙個物件陣列

protected object[

] elementdata;

//capacityincrement 是長度變數

protected

int elementcount;

//crud方法--add synchronized 修飾執行緒安全

public

synchronized

boolean

add(e e)..

.//原理--陣列的copy

elementdata = arrays.

copyof

(elementdata, newcapacity)

;

由此可見,vector底層資料結構是陣列,crud是陣列的copy,同時由synchronized 修飾是執行緒安全的,但是效率不如arraylist

arraylist 和 vector 底層都是陣列,不同的是vector 是執行緒安全的,缺點都是更新慢

linkedlist 底層是鍊錶,非執行緒安全,優點是更新快,缺點遍歷慢

Java原始碼學習之List

是一種有序的容器 也被稱為序列 使用者可以精確地控制每一元素在list中的插入位置。使用者可以通過元素的索引獲得該元素並且搜尋list中的元素。不同於set,list允許重複的元素。list介面在collection介面之外對iterator,add,remove,equals,hashcode方法...

乾貨 JAVA 8 中List原始碼深入解析

前言 如果給list,set,map放一塊的快,原始碼太多,所以分開搞,更加清楚。collection的子類只要有list,set兩個介面 collection 作為list和set的父類 collections 集合類的乙個工具類 幫助類,其中提供了一系列靜態方法,用於對集合中元素進行排序 搜尋以...

java原始碼解析 Map

an object that maps keys to values.a map cannot contain duplicate keys each key can map to at most one value.將鍵對映到值的物件。不能包含重複的鍵 每個鍵最多可以對映乙個值。map 的類資訊 ...