前言
聲明,本文使用的是JDK1.8
從今天開始正式去學習Java基礎中最重要的東西--->集合
無論在開發中,在面試中這個知識點都是非常非常重要的,因此,我在此花費的時間也是很多,得參閱挺多的資料,下面未必就做到日更了...
當然了,如果講得有錯的地方還請大家多多包涵并不吝在評論去指正~
一、集合(Collection)介紹 1.1為什么需要CollectionJava是一門面向對象的語言,就免不了處理對象
為了方便操作多個對象,那么我們就得把這多個對象存儲起來
想要存儲多個對象(變量),很容易就能想到一個容器
常用的容器我們知道有-->StringBuffered,數組(雖然有對象數組,但是數組的長度是不可變的!)
所以,Java就為我們提供了集合(Collection)~
1.2數組和集合的區別接下來,我們可以對數組和集合的區別來分析一下:
數組和集合的區別:
1:長度的區別
數組的長度固定
集合的長度可變
2:元素的數據類型
數組可以存儲基本數據類型,也可以存儲引用類型
集合只能存儲引用類型(你存儲的是簡單的int,它會自動裝箱成Integer)
1.3Collection的由來與功能Collection的由來:
集合可以存儲多個元素,但我們對多個元素也有不同的需求
多個元素,不能有相同的
多個元素,能夠按照某個規則排序
針對不同的需求:java就提供了很多集合類,多個集合類的數據結構不同。但是,結構不重要,重要的是能夠存儲東西,能夠判斷,獲取
把集合共性的內容不斷往上提取,最終形成集合的繼承體系---->Collection
Collection的大致結構體系是這樣的:
但是,一般我們要掌握的并不需要那么多,只需要掌握一些常用的集合類就行了。下面我圈出來的那些:
再次精減:
Collection的基礎功能:
二、迭代器(Iterator)介紹我們可以發現Collection的源碼中繼承了Iterable,有iterator()這個方法...
點進去看了一下,Iterable是一個接口:
它有iterator()這個方法,返回的是Iterator
再來看一下,Iterator也是一個接口,它只有三個方法:
hasNext()
next()
remove()
可是,我們沒能找到對應的實現方法,只能往Collection的子類下找找了,于是我們找到了--->ArrayList(該類后面會說)
于是,我們在ArrayList下找到了iterator實現的身影:它是在ArrayList以內部類的方式實現的!并且,從源碼可知:Iterator實際上就是在遍歷集合
所以說:我們遍歷集合(Collection)的元素都可以使用Iterator,至于它的具體實現是以內部類的方式實現的!
三、List集合介紹從上面已經可以看到了,Collection主要學習集合的類型兩種:Set和List,這里主要講解List!
我們來看一下List接口的方法,比Collection多了一點點:
List集合的特點就是:有序(存儲順序和取出順序一致),可重復
Collection返回的是Iterator迭代器接口,而List中又有它自己對應的實現-->ListIterator接口
該接口比普通的Iterator接口多了幾個方法:
從方法名就可以知道:ListIterator可以往前遍歷,添加元素,設置元素
3.1List集合常用子類List集合常用的子類有三個:
ArrayList
底層數據結構是數組。線程不安全
LinkedList
底層數據結構是鏈表。線程不安全
Vector
底層數據結構是數組。線程安全
現在知道有三個常用的集合類即可,后面會開新的文章來講解的~
四、Set集合介紹從Set集合的方法我們可以看到:方法沒有比Collection要多
Set集合的特點是:元素不可重復
4.1Set集合常用子類
HashSet集合
A:底層數據結構是哈希表(是一個元素為鏈表的數組)
TreeSet集合
A:底層數據結構是紅黑樹(是一個自平衡的二叉樹)
B:保證元素的排序方式
LinkedHashSet集合
A::底層數據結構由哈希表和鏈表組成。
五、最后本篇主要概括了Collection的要點,并沒有深入去研究各種的集合類,該部分留到新開的章節去講解,敬請期待~~
明天是清明節(回家),這兩天是不更新集合的了,如果在家有空可能會刷幾道算法題然后整理后會更新公眾號~
文章的目錄導航:https://zhongfucheng.bitcron.com/post/shou-ji/gong-zhong-hao-wen-zhang-zheng-li
參考資料:
Core Java
數據結構與算法分析,Java語言描述
如果文章有錯的地方歡迎指正,大家互相交流。習慣在微信看技術文章,想要獲取更多的Java資源的同學,可以關注微信公眾號:Java3y
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/68916.html
摘要:新特性總覽標簽本文主要介紹的新特性,包括表達式方法引用流默認方法組合式異步編程新的時間,等等各個方面。還有對應的和類型的函數連接字符串廣義的歸約匯總起始值,映射方法,二元結合二元結合。使用并行流時要注意避免共享可變狀態。 Java8新特性總覽 標簽: java [TOC] 本文主要介紹 Java 8 的新特性,包括 Lambda 表達式、方法引用、流(Stream API)、默認方...
摘要:并且,我們的底層都是紅黑樹來實現的。紅黑樹是一種平衡二叉樹因此它沒有節點。 前言 聲明,本文用得是jdk1.8 前面已經講了Collection的總覽和剖析List集合: Collection總覽 List集合就這么簡單【源碼剖析】 原本我是打算繼續將Collection下的Set集合的,結果看了源碼發現:Set集合實際上就是HashMap來構建的! showImg(https:/...
摘要:線程不安全底層數據結構是鏈表。的默認初始化容量是,每次擴容時候增加原先容量的一半,也就是變為原來的倍刪除元素時不會減少容量,若希望減少容量則調用它不是線程安全的。 前言 聲明,本文用得是jdk1.8 前一篇已經講了Collection的總覽:Collection總覽,介紹了一些基礎知識。 現在這篇主要講List集合的三個子類: ArrayList 底層數據結構是數組。線程不安全 ...
前言 聲明,本文用得是jdk1.8 前面已經講了Collection的總覽和剖析List集合以及散列表、Map集合、紅黑樹的基礎了: Collection總覽 List集合就這么簡單【源碼剖析】 Map集合、散列表、紅黑樹介紹 本篇主要講解HashMap,以及涉及到一些與hashtable的比較~ 看這篇文章之前最好是有點數據結構的基礎: Java實現單向鏈表 棧和隊列就是這么簡單 二叉樹就...
摘要:習慣在微信看技術文章,想要獲取更多的資源的同學,可以關注微信公眾號。為了大家方便,剛新建了一下群,大家也可以去交流交流。謝謝支持了希望能多介紹給其他有需要的朋友 前言 聲明,本文用得是jdk1.8 前面已經講了Collection的總覽和剖析List集合以及散列表、Map集合、紅黑樹還有HashMap基礎了: Collection總覽 List集合就這么簡單【源碼剖析】 Map集合、...
閱讀 1110·2021-09-22 16:04
閱讀 1494·2019-08-30 15:43
閱讀 1097·2019-08-29 14:01
閱讀 3437·2019-08-26 12:19
閱讀 3351·2019-08-26 12:15
閱讀 1443·2019-08-26 12:13
閱讀 3263·2019-08-23 17:00
閱讀 1482·2019-08-23 15:38