Java 集合框架------ArrayList原始碼分析
ArrayList的使用:
儲存結構 陣列,查詢遍歷速度更快,增刪慢
例子:ArrayList可以直接例項化
原始碼分析
DEFAULT_CAPACITY = 10; 預設容量
注意:沒有向集合中新增任何元素時,容量 0 ,新增任意一個元素之後 容量 10
每次擴容大小是原來的 1.5 倍
elementData 存放元素的陣列
size 實際元素個數(小於10)
提出問題: 預設容量的 10 是怎麼來的???
add()方法
檢視 ensureCapacityInternal 方法:
此時的 if 條件成立,max函式其實就是在判斷 10 和 1 的大小,1 是怎麼來的?函式ensureCapacityInternal傳過來的值為 1。此時的minCapacity變成了 10
檢視 ensureExplicitCapacity方法
if 條件也還是成立,判斷的是 10 - 0 > 0 ,檢視grow方法
>> 右移 ,10右移一位變成了 5 ,所以擴容的時候容量是原來的 1.5 倍
這裡的 if 條件: newCapacity 減去一個很大很大的數,好幾億,條件不成立,所以執行下面的程式碼 copyOf
ArrayList 和 Vector的區別請看 : Vector
相關文章
- JAVA集合:ArrayList原始碼分析Java原始碼
- 【Java集合】ArrayList原始碼分析Java原始碼
- java集合原始碼分析(三):ArrayListJava原始碼
- JAVA ArrayList集合底層原始碼分析Java原始碼
- 死磕 java集合之ArrayList原始碼分析Java原始碼
- 集合原始碼分析[3]-ArrayList 原始碼分析原始碼
- Java類集框架 —— ArrayList原始碼分析Java框架原始碼
- Java容器類框架分析(1)ArrayList原始碼分析Java框架原始碼
- Java 集合 ArrayList 原始碼分析(帶著問題看原始碼)Java原始碼
- Java集合原始碼剖析——ArrayList原始碼剖析Java原始碼
- 集合框架原始碼學習之ArrayList框架原始碼
- Java集合之ArrayList原始碼解析Java原始碼
- Java集合框架(一)-ArrayListJava框架
- Java集合原始碼學習(2)ArrayListJava原始碼
- 【Java集合原始碼剖析】Java集合框架Java原始碼框架
- Java集合-ArrayList原始碼解析-JDK1.8Java原始碼JDK
- 集合-ArrayList 原始碼解析原始碼
- java基礎:ArrayList — 原始碼分析Java原始碼
- Java容器原始碼學習--ArrayList原始碼分析Java原始碼
- Java 8 ArrayList 原始碼簡單分析Java原始碼
- [原始碼分析]ArrayList原始碼
- ArrayList 原始碼分析原始碼
- ArrayList原始碼分析原始碼
- Java集合原始碼分析(十四):TreeMapJava原始碼
- Java集合原始碼分析(九)——HashSetJava原始碼
- java集合原始碼分析(六):HashMapJava原始碼HashMap
- JAVA集合-ArrayListJava
- Java集合——ArrayListJava
- ArrayList-原始碼分析原始碼
- ArrayList方法原始碼分析原始碼
- 集合框架2- ArrayList框架
- Java 8 中 ArrayList 的變化原始碼分析Java原始碼
- Java-ArrayList & LinkedList的原始碼對比分析Java原始碼
- Java——ArrayList原始碼解析Java原始碼
- 搞懂 Java ArrayList 原始碼Java原始碼
- Java 集合系列之 LinkedList原始碼分析Java原始碼
- Java集合乾貨——CopyOnWriteArrayList原始碼分析Java原始碼
- Java集合原始碼分析之開篇Java原始碼