Java集合干貨系列-集合總體大綱

前言

Java集合是java提供的工具包,包含了常用的數(shù)據(jù)結(jié)構(gòu):集合、鏈表、隊列、棧、數(shù)組、映射等。Java集合工具包位置是java.util.*
Java集合主要可以劃分為4個部分:List列表、Set集合、Map映射、工具類(Iterator迭代器、Enumeration枚舉類、Arrays和Collections)。
Java集合工具包框架圖(如下):

正文

看上面的框架圖,先抓住它的主干,即Collection和Map。

Collection接口、子接口以及實現(xiàn)類

Collection接口

  • 是List、Set和Queue接口的父接口
  • 定義了可用于操作List、Set和Queue的方法-增刪改查

Collection接口API中定義的方法如下:

List接口

  • List是元素有序并且可以重復(fù)的集合,被稱為序列
  • List可以精確的控制每個元素的插入位置,或刪除某個位置元素
  • List接口的常用子類:
    ArrayList
    LinkedList
    Vector
    Stack

下圖是List的JDK源碼UML圖。

Set接口

  • Set接口中不能加入重復(fù)元素,無序
  • Set接口常用子類:
    散列存放:HashSet
    有序存放:TreeSet

下圖是Set的JDK源碼UML圖。

Map和HashMap

Map接口

  • Map提供了一種映射關(guān)系,其中的元素是以鍵值對(key-value)的形式存儲的,能夠?qū)崿F(xiàn)根據(jù)key快速查找value
  • Map中的鍵值對以Entry類型的對象實例形式存在
  • 鍵(key值)不可重復(fù),value值可以
  • 每個建最多只能映射到一個值
  • Map接口提供了分別返回key值集合、value值集合以及Entry(鍵值對)集合的方法
  • Map支持泛型,形式如:Map<K,V>

HashMap類

  • HashMap是Map的一個重要實現(xiàn)類,也是最常用,基于哈希表實現(xiàn)
  • HashMap中的Entry對象是無序排列的
  • Key值和Value值都可以為null,但是一個HashMap只能有一個key值為null的映射(key值不可重復(fù))

下圖是Map的JDK源碼UML圖

Comparable和Comparator

Comparable接口——可比較的

  • 實現(xiàn)該接口表示:這個類的實例可以比較大小,可以進(jìn)行自然排序
  • 定義了默認(rèn)的比較規(guī)則
  • 其實現(xiàn)類需要實現(xiàn)compareTo()方法
  • compareTo()方法返回正數(shù)表示大,負(fù)數(shù)表示小0表示相等

Comparator接口——比較工具接口

  • 用于定義臨時比較規(guī)則,而不是默認(rèn)比較規(guī)則
  • 其實現(xiàn)類需要實現(xiàn)compare()方法
  • Comparable和Comparator都是Java集合框架的成員

Iterator接口

  1. 集合輸出的標(biāo)準(zhǔn)操作
    標(biāo)準(zhǔn)做法,使用Iterator接口
  2. 操作原理:
    Iterator是專門的迭代輸出接口,迭代輸出就是將元素一個個進(jìn)行判斷,判斷其是否有內(nèi)容,如果有內(nèi)容則把內(nèi)容取出。

總結(jié)

集合的作用

  • 在類的內(nèi)部,對數(shù)據(jù)進(jìn)行組織;
  • 簡單而快速的搜索大數(shù)量的條目;
  • 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中間快速的插入或者刪除有關(guān)元素;
  • 有的集合接口,提供了映射關(guān)系,可以通過關(guān)鍵字(key)去快速查找對應(yīng)的唯一對象,而這個關(guān)鍵字額可以是任意類型。

與數(shù)組的對比—————為何選擇集合而不是數(shù)組

  • 數(shù)組的長度固定,集合長度可變
  • 數(shù)組只能通過下標(biāo)訪問元素,類型固定,而有的集合可以通過任意類型查找所映射的具體對象。

整理的集合框架思維導(dǎo)圖

個人整理的Java集合框架思維導(dǎo)圖,動態(tài)維護(hù)。導(dǎo)出的圖片無法查看備注的一些信息,所以需要源文件的童鞋可以關(guān)注我個人主頁上的公眾號,回復(fù)Java集合框架即可獲取源文件。


一直覺得自己寫的不是技術(shù),而是情懷,一篇篇文章是自己這一路走來的痕跡??繉I(yè)技能的成功是最具可復(fù)制性的,希望我的這條路能讓你少走彎路,希望我能幫你抹去知識的蒙塵,希望我能幫你理清知識的脈絡(luò),希望未來技術(shù)之巔上有你也有我。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容