Collection總覽

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

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

無論在開發(fā)中,在面試中這個知識點都是非常非常重要的,因此,我在此花費的時間也是很多,得參閱挺多的資料,下面未必就做到日更了…

當然了,如果講得有錯的地方還請大家多多包涵并不吝在評論去指正~

一、集合(Collection)介紹

1.1為什么需要Collection

Java是一門面向?qū)ο蟮恼Z言,就免不了處理對象

為了方便操作多個對象,那么我們就得把這多個對象存儲起來

想要存儲多個對象(變量),很容易就能想到一個容器

常用的容器我們知道有-->StringBuffered,數(shù)組(雖然有對象數(shù)組,但是數(shù)組的長度是不可變的!)

所以,Java就為我們提供了集合(Collection)~

1.2數(shù)組和集合的區(qū)別

接下來,我們可以對數(shù)組和集合的區(qū)別來分析一下:

數(shù)組和集合的區(qū)別:

1:長度的區(qū)別

數(shù)組的長度固定

集合的長度可變

2:內(nèi)容不容

數(shù)組存儲的是同一種類型的元素

集合可以存儲不同類型的元素(但是一般我們不這樣干..)

3:元素的數(shù)據(jù)類型

數(shù)組可以存儲基本數(shù)據(jù)類型,也可以存儲引用類型

集合只能存儲引用類型(你存儲的是簡單的int,它會自動裝箱成Integer)

1.3Collection的由來與功能

Collection的由來:

集合可以存儲多個元素,但我們對多個元素也有不同的需求

多個元素,不能有相同的

多個元素,能夠按照某個規(guī)則排序

針對不同的需求:java就提供了很多集合類,多個集合類的數(shù)據(jù)結(jié)構(gòu)不同。但是,結(jié)構(gòu)不重要,重要的是能夠存儲東西,能夠判斷,獲取

把集合共性的內(nèi)容不斷往上提取,最終形成集合的繼承體系---->Collection

Collection的大致結(jié)構(gòu)體系是這樣的:

但是,一般我們要掌握的并不需要那么多,只需要掌握一些常用的集合類就行了。下面我圈出來的那些

再次精減:

Collection的基礎(chǔ)功能:

二、迭代器(Iterator)介紹

我們可以發(fā)現(xiàn)Collection的源碼中繼承了Iterable,有iterator()這個方法…

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

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

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

hasNext()

next()

remove()

可是,我們沒能找到對應(yīng)的實現(xiàn)方法,只能往Collection的子類下找找了,于是我們找到了--->ArrayList(該類后面會說)

于是,我們在ArrayList下找到了iterator實現(xiàn)的身影:它是在ArrayList以內(nèi)部類的方式實現(xiàn)的!并且,從源碼可知:Iterator實際上就是在遍歷集合

所以說:我們遍歷集合(Collection)的元素都可以使用Iterator,至于它的具體實現(xiàn)是以內(nèi)部類的方式實現(xiàn)的!

三、List集合介紹

從上面已經(jīng)可以看到了,Collection主要學習集合的類型兩種:Set和List,這里主要講解List!

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

List集合的特點就是:有序(存儲順序和取出順序一致),可重復(fù)

Collection返回的是Iterator迭代器接口,而List中又有它自己對應(yīng)的實現(xiàn)-->ListIterator接口

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

從方法名就可以知道:ListIterator可以往前遍歷,添加元素,設(shè)置元素

3.1List集合常用子類

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

ArrayList

底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組。線程不安全

LinkedList

底層數(shù)據(jù)結(jié)構(gòu)是鏈表。線程不安全

Vector

底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組。線程安全

現(xiàn)在知道有三個常用的集合類即可,后面會開新的文章來講解的

四、Set集合介紹

從Set集合的方法我們可以看到:方法沒有比Collection要多

Set集合的特點是:元素不可重復(fù)

4.1Set集合常用子類

HashSet集合

A:底層數(shù)據(jù)結(jié)構(gòu)是哈希表(是一個元素為鏈表的數(shù)組)

TreeSet集合

A:底層數(shù)據(jù)結(jié)構(gòu)是紅黑樹(是一個自平衡的二叉樹)

B:保證元素的排序方式

LinkedHashSet集合

A::底層數(shù)據(jù)結(jié)構(gòu)由哈希表和鏈表組成。

最后編輯于
?著作權(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)容

  • 集合Collection總覽 前言 聲明,本文使用的是JDK1.8 從今天開始正式去學習Java基礎(chǔ)中最重要的東西...
    Java3y閱讀 696評論 2 14
  • 四、集合框架 1:String類:字符串(重點) (1)多個字符組成的一個序列,叫字符串。生活中很多數(shù)據(jù)的描述都采...
    佘大將軍閱讀 867評論 0 2
  • Java集合類可用于存儲數(shù)量不等的對象,并可以實現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu)如棧,隊列等,Java集合還可以用于保存具有映射關(guān)...
    小徐andorid閱讀 2,079評論 0 13
  • 集合類框架的介紹: ![Java 集合類框架](https://upload-images.jianshu.io/...
    LynnGuo閱讀 799評論 0 1
  • java基礎(chǔ) 集合承繼包含圖 Collection vs Collections 首先,"Collection" ...
    onlyHalfSoul閱讀 1,427評論 0 5

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