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