ArraList原始碼分析

2021-08-09 04:57:56 字數 1862 閱讀 2414

一、對於arraylist需要掌握的七點內容

二、原始碼分析

2.1、arraylist的建立(常見的兩種方式)

liststrlist = new arraylist();

liststrlist2 = new arraylist(2);

//是建立list的時候[
private transient object elementdata;//elementdata儲存arraylist內的元素

private int size;//size表示它包含的元素的數量,就是存進在list裡面的資料

// 構造方法,initialcapacity來初始化elementdata陣列的大小

public arraylist(int initialcapacity)

if (initialcapacity < 0)

throw new illegalargumentexception("illegal capacity: "+ initialcapacity);

this.elementdata = new object[initialcapacity];//在這初始化陣列的大小

}/**

* . 無參建構函式

*/public arraylist()

]
注意:

在我們執行

new arraylist()時,會呼叫上邊的無參構造器,創造乙個容量為10的物件陣列。

在我們執行new arraylist(2)時,會呼叫上邊的public arraylist(int initialcapacity),創造乙個容量為2的物件陣列。

注意:2.2.1、add(e)

strlist2.add("hello");

public class add 

/*** 確保陣列的容量足夠存放新加入的元素,若不夠,要擴容

*/public void ensurecapacity(int mincapacity)

}

在上述**的擴容結束後,呼叫了arrays.copyof(elementdata, newcapacity)方法,這個方法中:對於我們這裡而言,先建立了乙個新的容量為newcapacity的物件陣列,然後使用system.arraycopy()方法將舊的物件陣列複製到新的物件陣列中去了。

注意:

2.2.2、addall(collection extends e> c)

使用方式:

liststrlist = new arraylist();

strlist.add("jigang");

strlist.add("nana");

strlist.add("nana2");

list

strlist2 = new arraylist(2);

strlist2.addall(strlist);

源**:

/**

* 將c全部加入elementdata

*/public

boolean addall(collection extends e>c)

注意:

ArraList原始碼解析之擴容機制

2 擴容機制 因為 挺多的,所以分為幾次來分析。首先先弄明白,使用的原理先,也就是先分析一下,arraylist是怎麼建立的 怎麼新增元素先。平時建立一般都是直接new乙個arraylist的物件。下面來看一下,建立的幾種方式,以及不同之處。帶有初始容量的構造方法。如果引數大於0,則直接new乙個大...

spring原始碼分析 spring原始碼分析

1.spring 執行原理 spring 啟動時讀取應用程式提供的 bean 配置資訊,並在 spring 容器中生成乙份相應的 bean 配置登錄檔,然後根據這張登錄檔例項化 bean,裝配好 bean 之間的依賴關係,為上 層應用提供準備就緒的執行環境。二 spring 原始碼分析 1.1spr...

思科VPP原始碼分析(dpo機制原始碼分析)

vpp的dpo機制跟路由緊密結合在一起。路由表查詢 ip4 lookup 的最後結果是乙個load balance t結構。該結構可以看做是乙個hash表,裡面包含了很多dpo,指向為下一步處理動作。每個dpo都是新增路由時的乙個path的結果。dpo標準型別有 dpo drop,dpo ip nu...