一、對於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...