從原始碼中可以看出
arraylist 初始化容量為 10
擴容: add(e e) 原大小的 1.5 倍 待補充
進入list 可以看到 list有4個特有方法 均是通過 下標 進行操作 remove 返回刪除元素的value
另外的 add 跟 remove 是實現於 collection 返回值均為boolean
;// list 特有方法
list.
add(5,
"7")
; string remove = list.
remove(5
);system.out.
println
(remove)
;對於集合操作的api基本都是來自於 collection
最大的是 iterable 提供了對集合的遍歷 方式
迭代器
// 通過迭代器 迭代器的底層是增強for
iterator
it = list.
iterator()
;while
(it.
hasnext()
)}
foreach
// lamada表示式簡寫
list.
foreach
(s -
> system.out.
println
(s))
;
spliterator 平行迭代器 顧名思義就是多執行緒進行遍歷 其原理就是多個執行緒共享同乙個list(位址相同) 通過一定的技術將其下表進行分段 每一段執行緒處理一部分 故不存在多執行緒的問題
之後單獨扒一下這個新特性的執行原理。
system.out.
println
("-------平行迭代器---------");
//平行迭代器
spliterator
sit = list.
spliterator()
; sit.
foreachremaining
(s->);
}
筆者為了提公升自己 從扒原始碼開始 有問題的地方望大佬們賜教。 ArrayList原始碼分析
arraylist是平時使用很多的乙個類,趁有時間,我也閱讀以下原始碼,以幫助自己加深理解。類的層次結構這裡就不列出了,主要分析一下原始碼部分,屬性部分 protected transient int modcount 0 這個屬性是從abstractlist繼承過來的,每次arraylist進行結...
ArrayList原始碼剖析
建構函式 有3個建構函式 1 在jdk原始碼中arraylist無參的建構函式,預設初始化大小是10 2 帶有指定大小引數的建構函式 3 帶有集合引數的建構函式 一 確定arrarlist的容量 1 若arraylist的容量不足以容納當前的全部元素,設定新的容量 原始容量 3 2 1。2 如果擴容...
ArrayList原始碼理解
與linkedlist原始碼理解放在一起查閱,效果更好 對隊成員變數的分析,可以知道arraylist的資料結構 對add 方法的分析,可以得知arraylist新增資料的效率不高 對get 方法的分析,可以看出arraylist查詢的效率非常高 對remove 方法的分析,可以了解到arrayli...