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