1. 程式人生 > >「 深入淺出 」java集合Collection和Map

「 深入淺出 」java集合Collection和Map

本系列文章主要對java集合的框架進行一個深入淺出的介紹,使大家對java集合有個深入的理解。
本篇文章主要具體介紹了Collection介面,Map介面以及Collection介面的三個子介面Set,List,Queue。

什麼是集合

Java集合類存放於 java.util 包中,是一個用來存放物件的容器。

集合有以下幾個特點:
①集合只能存放物件。比如你存一個 int 型資料 1放入集合中,其實它是自動轉換成 Integer 類後存入的。
②集合存放的是物件的引用,物件本身還是放在堆記憶體中。
③集合可以存放不同型別,不限數量的資料型別。

集合和陣列的區別

1.陣列長度需初始化時指定長度,只能儲存定長的資料;而集合可以儲存數量不確定的資料。
2.陣列可以存基本型別,也可以是物件;
集合裡只能儲存物件(實際上儲存物件的引用變數)。

Java集合介紹

主要分為Collection介面和Map介面,Collection介面有3個主要的介面List,Set,Queue
整體框架如下:

image

圖源於網路

迭代介面Iterator

所有的集合類都實現了Iterator介面,這是一個用於遍歷集合中元素的介面
所包含方法如下:

image

Collection介面

Collection介面是處理物件集合的根介面,其中定義了很多對元素進行操作的方法,框架圖中的AbstractCollection提供Collection部分實現的抽象類。
Collection介面中的所有方法

image

其中比較常用的方法如下

  • add(E) 新增一個元素到集合中

  • addAll(Collection) 將指定集合中的所有元素新增到集合中

  • remove(Object) 刪除一個元素

  • contains(Collection) 方法檢測集合中是否包含指定的元素

  • toArray() 方法返回一個表示集合的陣列

Collection三個子介面

Collection的常用方法,在子介面中同樣常用,下面不再重複說明

1.List(有序、可重複)

List裡存放的物件是有序的,同時也是可以重複的,List關注的是索引,擁有一系列和索引相關的方法,查詢速度快。因為往list集合裡插入或刪除資料時,會伴隨著後面資料的移動,所有插入刪除資料速度慢。

List介面中的所有方法

image

其中主要比較常用的方法如下

  • get(int) 獲取元素

  • set(int, E) 設定元素到某個索引位置

  • add(int, E) 新增元素到某個索引位置

  • add(int, E) 刪除某個索引位置元素

  • sort(Comparator) 排序

2.Set(無序、不能重複)

Set裡存放的物件是無序,不能重複的,集合中的物件不按特定的方式排序,只是簡單地把物件加入集合中。

List介面中的全部方法

image

Set只繼承了Collection,並沒有新增自己的方法,所以常用方法與Collection一樣

3.Queue(有序、可重複、先進先出、不可隨機訪問)

佇列是“先進先出”容器。插入新元素只能新增到佇列的尾部,獲取或刪除元素只能是佇列頭部的元素。

Queue中的所有方法

image

需要注意的是,新增、檢索、刪除都分別提供了兩種方法,請注意一下它們的區別

4.Map(鍵值對、鍵唯一、值不唯一)

Map集合中儲存的是鍵值對,提供key(鍵)到value(值)的對映,鍵不能重複,值可以重複。

Map的所有方法如下圖

image

常用方法如下:

  • get(Object) 獲取元素

  • put(K, V) 新增元素

  • remove(K) 刪除元素

  • entrySet() 獲取Entry集合,一般用於遍歷Map裡的元素

Map中還包括一個內部類Entry,該類封裝了一個key-value對。Map內部儲存是通過Entry進行儲存的。 Entry包含如下三個方法:

image

List、Set、Map的區別

1.繼承

List和Set繼承Collection介面,而Map不是

2.重複性:

① List允許有重複的元素。任何數量的重複元素都可以在不影響現有重複元素的值及其索引的情況下插入到List集合中;

② Set集合不允許元素重複。Set以及所有實現了Set介面的類都不允許重複值的插入,若多次插入同一個元素時,在該集合中只顯示一個;

③ Map以鍵值對的形式對元素進行儲存。Map不允許有重複鍵,但允許有不同鍵對應的重複的值;

3.有序性:

① List及其所有實現類保持了每個元素的插入順序;

② Set中的元素都是無序的;但是某些Set的實現類以某種殊形式對其中的元素進行排序,如:LinkedHashSet按照元素的插入順序進行排序;

③ Map跟Set一樣對元素進行無序儲存,但其某些實現類對元素進行了排序。如:TreeMap根據鍵對其中的元素進行升序排序;

4.空值(Null)問題:

① List允許任意數量的空值(Null)

② Set最多允許出現一個空值(Null)(因為Set集合不允許元素重複,實際可上重複插入空值(Null))

③  Map只允許出現一個空鍵(Null),但允許出現任意數量的空值(Null)

總結:

List中的元素,有序、可重複、任意空值
Set中的元素,無序、不重複、只有一個空元素
Map中的元素,無序、鍵不重,值可重、可一個空鍵,多可空值

以上是java集合框架的概括內容,通過這篇文章主要了解一些基本的概念以及對集合的操作方法。
後續文章將對java集合中的具體實現類進行深入瞭解。有興趣的話可以觀看後續內容,進一步瞭解java集合內容。