老讀者都知道,我是自學轉行到 java 的。那時迫於生存壓力,學得比較快,不少知識點僅停留在會用的層面。最近,光會用不知道原理,沒什麼意思。每次使用時都是機械性的 "熟練使用"。加之一直有迴歸基礎的想法,因此想在業餘時間覆盤 java 的基礎知識。知其然知其因此然是技術人的追求。java
說到覆盤基礎,並非全部的都會覆盤,沒那個時間更沒那個必要。好比,一些基礎的語法以及條件語句,極度簡單。這類是不須要覆盤的。思前想後,我以爲整個計劃應該從集合開始,而覆盤的方式就是讀源碼。數組
首先,java 是一門面向對象語言,操做對象是咱們的平常。既然操做就須要有東西把對象存儲起來。因而容器就應運而生,初學者接觸到的第一個容器就是數組,但這遠遠不夠,根據不一樣的對象以及不一樣的業務,咱們須要用到不一樣的容器。好比,不想要重複對象,咱們就會想到用 set 容器,想要對象有序咱們會用 List 。無論是 List、Set。他們都會有共性, 而 java 就根據這些共性,給咱們提供了 Collection 集合。數據結構
由上面的 Collection 接口框架圖,咱們能夠知道 Collection 是 List、Set、Queue 的父接口,看到這裏,大家可能會問,Map 哪去了?其實,Java 中的容器,包括 Collection 和 Map ,Map 是另一個體系,因此咱們今天先不講 Map 。框架
Collection 接口定義了以上待實現的方法。好比:spa
List 集合的特色是元素有序、可重複,它包含了 ArrayList、Vendor 和 LinkedList 這三個實現類。三者比較以下:設計
Set 集合最大的特色是不容許重複元素,它有 HashSet、TreeSet、LinkedHashSet 、EnumSet 四個實現類,對好比下:3d
至於EnumSet 類,我還沒研究過怎麼使用,在網上查了下,它是專爲枚舉類設計的集合類,EnumSet 中的全部元素都必須是指定枚舉類型的枚舉值,具體的這裏先不作介紹,待我研究下用法以及場景,再專門介紹。代理
Queue 用的很少,它經常使用於模擬隊列這種數據結構,實現 FIFO 等數據結構。一般,隊列不容許隨機訪問隊列中的元素。在工做中,我尚未使用過,待我研究過,再來跟你們分享。對象
一、java | 什麼是動態代理blog