集合Collection總覽

前言

聲明,本文使用的是JDK1.8

從今天開始正式去學習Java基礎中最重要的東西--->集合java

不管在開發中,在面試中這個知識點都是很是很是重要的,所以,我在此花費的時間也是不少,得參閱挺多的資料,下面未必就作到日更了...面試

固然了,若是講得有錯的地方還請你們多多包涵並不吝在評論去指正~算法

1、集合(Collection)介紹

1.1爲何須要Collection

  1. Java是一門面向對象的語言,就免不了處理對象
  2. 爲了方便操做多個對象,那麼咱們就得把這多個對象存儲起來
  3. 想要存儲多個對象(變量),很容易就能想到一個容器
  4. 經常使用的容器咱們知道有-->StringBuffered,數組(雖然有對象數組,可是數組的長度是不可變的!)
  5. 因此,Java就爲咱們提供了集合(Collection)~

1.2數組和集合的區別

接下來,咱們能夠對數組和集合的區別來分析一下:數組

數組和集合的區別:安全

  • 1:長度的區別微信

    • 數組的長度固定
    • 集合的長度可變
  • 2:元素的數據類型數據結構

    • 數組能夠存儲基本數據類型,也能夠存儲引用類型
    • 集合只能存儲引用類型(你存儲的是簡單的int,它會自動裝箱成Integer)

1.3Collection的由來與功能

Collection的由來:post

  • 集合能夠存儲多個元素,但咱們對多個元素也有不一樣的需求學習

    • 多個元素,不能有相同的
    • 多個元素,可以按照某個規則排序
  • 針對不一樣的需求:java就提供了不少集合類,多個集合類的數據結構不一樣。可是,結構不重要,重要的是可以存儲東西,可以判斷,獲取
  • 把集合共性的內容不斷往上提取,最終造成集合的繼承體系---->Collection

Collection的大體結構體系是這樣的:spa

可是,通常咱們要掌握的並不須要那麼多,只須要掌握一些經常使用的集合類就好了。下面我圈出來的那些

再次精減:

Collection的基礎功能:

2、迭代器(Iterator)介紹

咱們能夠發現Collection的源碼中繼承了Iterable,有iterator()這個方法...

點進去看了一下,Iterable是一個接口:

它有iterator()這個方法,返回的是Iterator

再來看一下,Iterator也是一個接口,它只有三個方法:

  • hasNext()
  • next()
  • remove()

但是,咱們沒能找到對應的實現方法,只能往Collection的子類下找找了,因而咱們找到了--->ArrayList(該類後面會說)

因而,咱們在ArrayList下找到了iterator實現的身影:它是在ArrayList以內部類的方式實現的!而且,從源碼可知:Iterator實際上就是在遍歷集合

因此說:咱們遍歷集合(Collection)的元素均可以使用Iterator,至於它的具體實現是之內部類的方式實現的!

3、List集合介紹

從上面已經能夠看到了,Collection主要學習集合的類型兩種:Set和List,這裏主要講解List!

咱們來看一下List接口的方法,比Collection多了一點點:

  • List集合的特色就是:有序(存儲順序和取出順序一致),可重複

圖片描述

Collection返回的是Iterator迭代器接口,而List中又有它本身對應的實現-->ListIterator接口

該接口比普通的Iterator接口多了幾個方法:

從方法名就能夠知道:ListIterator能夠往前遍歷,添加元素,設置元素

3.1List集合經常使用子類

List集合經常使用的子類有三個:

  • ArrayList

    • 底層數據結構是數組。線程不安全
  • LinkedList

    • 底層數據結構是鏈表。線程不安全
  • Vector

    • 底層數據結構是數組。線程安全

如今知道有三個經常使用的集合類便可,後面會開新的文章來說解的

4、Set集合介紹

從Set集合的方法咱們能夠看到:方法沒有比Collection要多

  • Set集合的特色是:元素不可重複

圖片描述

4.1Set集合經常使用子類

  • HashSet集合

    • A:底層數據結構是哈希表(是一個元素爲鏈表的數組)
  • TreeSet集合

    • A:底層數據結構是紅黑樹(是一個自平衡的二叉樹)
    • B:保證元素的排序方式
  • LinkedHashSet集合

    • A::底層數據結構由哈希表和鏈表組成。

5、最後

本篇主要歸納了Collection的要點,並無深刻去研究各類的集合類,該部分留到新開的章節去講解,敬請期待~~

明天是清明節(回家),這兩天是不更新集合的了,若是在家有空可能會刷幾道算法題而後整理後會更新公衆號~

文章的目錄導航https://zhongfucheng.bitcron.com/post/shou-ji/gong-zhong-hao-wen-zhang-zheng-li

參考資料:

  • Core Java
  • 數據結構與算法分析,Java語言描述
若是文章有錯的地方歡迎指正,你們互相交流。習慣在微信看技術文章,想要獲取更多的Java資源的同窗,能夠 關注微信公衆號:Java3y
相關文章
相關標籤/搜索