目錄
(一)一起學 Java Collections Framework 源碼之 概述
(二)一起學 Java Collections Framework 源碼之 AbstractCollection
JDK 中很多類 LZ 已經(jīng)使用了無數(shù)次,但認認真真從源碼級研究過其原理的還只占少數(shù),雖然從網(wǎng)上看過無數(shù)篇講解 Java 集合框架中各個類原理的文章,但從未看過源碼的 LZ 總有一種道聽途說的感覺。于是 LZ 決定將 JDK 中常用的模塊逐個深入到源碼中一探究竟,并將學習過程記錄下來與大家分享。
首先對 Java 集合框架(JCF, Java Collections Framework)有一個整體的認識,來看圖1。
圖1 Java 集合框架圖(圖片來源于網(wǎng)絡)
從 圖1 可以看出來,JCF 分為兩條主線,一條是以 java.util.Collection 接口為頂級接口的線性表結構,另一條是以 java.util.Map 為頂級接口的鍵值(K-V)映射結構。
一、Collection
Collection 接口下分為 List(序列)、Set(去重序列)和 Queue(隊列),實現(xiàn)了此接口的數(shù)據(jù)結構都是線性的。
1.List
List 是有序 collection。用戶可以精確控制每一個元素的位置,并可以像數(shù)組一樣通過索引(下標)來訪問元素。ArrayList、LinkedList、Vector、Stack 均實現(xiàn)了此接口,因此它們都是有序的數(shù)據(jù)結構。
1) ArrayList 是使用數(shù)組實現(xiàn)的可變長度的有序的集合,它允許包含 null 元素,并且不是同步的(is not sy