目錄

(一)一起學 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。

大數(shù)據(jù)培訓,云培訓,數(shù)據(jù)挖掘培訓,云計算培訓,高端軟件開發(fā)培訓,項目經(jīng)理培訓

圖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