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

什麼是集合

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

集合有以下幾個特點: ①集合隻能存放對象。比如你存一個 int 型數據 1放入集合中,其實它是自動轉換成 Integer 類後存入的。 ②集合存放的是對象的引用,對象本身還是放在堆內存中。 ③集合可以存放不同類型,不限數量的數據類型。

集合和數組的區別

1.數組長度需初始化時指定長度,隻能保存定長的數據;而集合可以保存數量不確定的數據。 2.數組可以存基本類型,也可以是對象; 集合裡隻能保存對象(實際上保存對象的引用變量)。

Java集合介紹

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

圖源於網絡

迭代接口Iterator

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

Collection接口

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

fec954724f6ce3d727d25d3b0efe8c8e

其中比較常用的方法如下

  • add(E) 添加一個元素到集合中
  • addAll(Collection) 將指定集合中的所有元素添加到集合中
  • remove(Object) 刪除一個元素
  • contains(Collection) 方法檢測集合中是否包含指定的元素
  • toArray() 方法返回一個表示集合的數組

Collection三個子接口

Collection的常用方法,在子接口中同樣常用,下面不再重復說明

1.List(有序、可重復)

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

List接口中的所有方法

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

  • get(int) 獲取元素
  • set(int, E) 設置元素到某個索引位置
  • add(int, E) 添加元素到某個索引位置
  • add(int, E) 刪除某個索引位置元素
  • sort(Comparator) 排序

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

Set裡存放的對象是無序,不能重復的,集合中的對象不按特定的方式排序,隻是簡單地把對象加入集合中。

List接口中的全部方法

f9f12c6a9dd52974cef51e269f1a0a63

Set隻繼承瞭Collection,並沒有添加自己的方法,所以常用方法與Collection一樣

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

隊列是“先進先出”容器。插入新元素隻能添加到隊列的尾部,獲取或刪除元素隻能是隊列頭部的元素。

Queue中的所有方法

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

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

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

Map的所有方法如下圖

af5ea9e7d42d3df33adde72514173f16

常用方法如下:

  • get(Object) 獲取元素
  • put(K, V) 添加元素
  • remove(K) 刪除元素
  • entrySet() 獲取Entry集合,一般用於遍歷Map裡的元素

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

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集合內容。

发表回复

相关推荐

磚的分類

一、常用磚的分類1.燒結普通磚是以粘土、頁巖、煤矸石等為主要原料,經胚料制備,入窯焙燒而成的實心磚。燒結普通磚主要用於:...

· 2分钟前

科普|為什麼鋼管舞要穿超高跟鞋

是我查閱資料&親身學習後總結的,有補充的提醒我呀。拉到最後有總結。但是我配瞭好多好多收藏的圖的 ,都看一眼吧!!一...

· 2分钟前

4款APP,让你的跑步更有效

跑步虽然很普遍,但它其实是一项很讲究技术的运动。今天就给大家推荐4款好用的跑步APP,让你的训练事半功倍!

· 3分钟前

糖力:從“甜美”到“溫柔”

細心的消費者發現,糖力的slogon已經逐漸從甜美的力量變成瞭溫柔的力量,產品設計也從誇張的曲線變成瞭柔和的曲線,面料從硬...

· 3分钟前

背带裤才是夏天的主场,会穿的轻松减龄10岁,谁还不是个小仙女呀

说起背带裤,可是历史悠久大有来头,背带裤又名“工装裤”或“饭单裤”,是由早期的机工工作裤的款式演变而来的,背带裤有两种形 ...

· 4分钟前