Java 基礎 | Collection 集合概覽

題圖

老讀者都知道,我是自學轉行到 java 的。那時迫於生存壓力,學得比較快,很多知識點僅停留在會用的層面。最近,光會用不知道原理,沒什麼意思。每次使用時都是機械性的 "熟練使用"。加之一直有迴歸基礎的想法,所以想在業餘時間覆盤 java 的基礎知識。知其然知其所以然是技術人的追求。

說到覆盤基礎,並不是所有的都會覆盤,沒那個時間更沒那個必要。比如,一些基礎的語法以及條件語句,極度簡單。這類是不需要覆盤的。思前想後,我覺得整個計劃應該從集合開始,而覆盤的方式就是讀源碼。

1、Java 爲什麼要有集合?

首先,java 是一門面嚮對象語言,操作對象是我們的日常。既然操作就需要有東西把對象存儲起來。於是容器就應運而生,初學者接觸到的第一個容器就是數組,但這遠遠不夠,根據不同的對象以及不同的業務,我們需要用到不同的容器。比如,不想要重複對象,我們就會想到用 set 容器,想要對象有序我們會用 List 。不管是 List、Set。他們都會有共性, 而 java 就根據這些共性,給我們提供了 Collection 集合。

2、Collection 接口框架圖

Collection

由上面的 Collection 接口框架圖,我們可以知道 Collection 是 List、Set、Queue 的父接口,看到這裏,你們可能會問,Map 哪去了?其實,Java 中的容器,包括 Collection 和 Map ,Map 是另外一個體系,所以我們今天先不講 Map 。

3、Collection 的方法

Collection

Collection 接口定義了以上待實現的方法。比如:

  • size() 計算容器長度
  • isEmpty() 是否爲空
  • contains() 是否包含某個對象
  • containsAll() 是否包含另一個集合的所有對象
  • iterator() 上層接口 iterable 的方法,用於生成迭代對象,遍歷對象
  • add() 添加一個對象
  • add() 添加另一個集合的所有對象
  • remove() 移除一個對象
  • removeAll() 移除所有對象
  • toArray() 把集合轉換成數組
  • retainAll() 是否與另一個集合有交集

4、List 子接口

List 集合的特點是元素有序、可重複,它包含了 ArrayList、Vendor 和 LinkedList 這三個實現類。三者比較如下:

List

5、Set 子接口

Set 集合最大的特點是不允許重複元素,它有 HashSet、TreeSet、LinkedHashSet 、EnumSet 四個實現類,對比如下:

Set

至於EnumSet 類,我還沒研究過怎麼使用,在網上查了下,它是專爲枚舉類設計的集合類,EnumSet 中的所有元素都必須是指定枚舉類型的枚舉值,具體的這裏先不做介紹,待我研究下用法以及場景,再專門介紹。

6、Queue 子接口

Queue 用的不多,它常用於模擬隊列這種數據結構,實現 FIFO 等數據結構。通常,隊列不允許隨機訪問隊列中的元素。在工作中,我還沒有使用過,待我研究過,再來跟大家分享。

推薦閱讀:

1、java | 什麼是動態代理

2、SpringBoot | 啓動原理

3、SpringBoot | 自動配置原理

一個優秀的廢人

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章