Java基礎(chǔ)(三) 集合

#集合

? ? Java集合類存放于 java.util 包中,是一個(gè)用來存放對(duì)象(引用類型)的容器(存儲(chǔ)基本類型會(huì)被自動(dòng)裝箱,轉(zhuǎn)化陳包裝類)

? ? ①、集合只能存放對(duì)象。比如你存一個(gè) int 型數(shù)據(jù) 1放入集合中,其實(shí)它是自動(dòng)轉(zhuǎn)換成 Integer 類后存入的,Java中每一種基本類型都有對(duì)應(yīng)的引用類型。

? ? ②、集合存放的是多個(gè)對(duì)象的引用,對(duì)象本身還是放在堆內(nèi)存中。

? ? ③、集合可以存放不同類型,不限數(shù)量的數(shù)據(jù)類型。

##1、集合的各體系結(jié)構(gòu)

? ? Java 的集合 主要由兩個(gè)接口派生出來的,分別是Collection和Map。


### 1.1 collection 集合? ?

? ? collection 主要派生了3個(gè)子類,分別為List(列表)、Set(集)、Queue(隊(duì)列)。其中,List、Queue中的元素有序可重復(fù),而Set中的元素?zé)o序不可重復(fù);


####1.1.1 List 集合

? list 集合是有序的、可重復(fù)的。主要有兩個(gè)實(shí)現(xiàn)類ArrayList和LinkedList。

#####1.1.1.2 ArryList

? ? 1)? ArryList 底層是基于動(dòng)態(tài)數(shù)據(jù)實(shí)現(xiàn)的,且線程不安全。

? ? 2) 實(shí)現(xiàn)了序列化接口java.io.Serializable,支持序列化。

? ? 3) 實(shí)現(xiàn)了Cloneable接口,它允許在堆中克隆出一塊和原對(duì)象一樣的對(duì)象,并將這個(gè)對(duì)象的地址賦予新的引用,這樣顯然對(duì)新引用的操作,不會(huì)影響到原對(duì)象。

? ? ArrayList 是如何擴(kuò)容的?

#####1.1.1.3 LinkedList? ? ? ?

? ? ? LinkedList 底層是基于雙向鏈表實(shí)現(xiàn)的。且線程不安全

#####1.1.1.4 Vector? ? ?

? ? ? 和ArrayList實(shí)現(xiàn)方式相同, 但考慮了線程安全問題, 所以效率略低。

#### 1.1.2 queue

####1.1.3 set

##? 1. ArrayList 和 LinkedList 的區(qū)別、優(yōu)缺點(diǎn)以及應(yīng)用場景?

? ? ArrayList 和 LinkedList 都是不同步的,也就是不保證線程安全;


>1)底層實(shí)現(xiàn)區(qū)別:

? ? ArryList 底層是基于動(dòng)態(tài)數(shù)據(jù)實(shí)現(xiàn)的,而LinkedList是基于雙向鏈表實(shí)現(xiàn)的。

>2)優(yōu)缺點(diǎn):

? ? 由于ArrayList底層由動(dòng)態(tài)數(shù)組實(shí)現(xiàn)的,而數(shù)組是按照順序且連續(xù)的存儲(chǔ)數(shù)據(jù)。所以一般情況下查詢的速度會(huì)比LinkedList快,但是插入或者刪除數(shù)據(jù)的速度較LinkedList慢,因?yàn)閿?shù)組的結(jié)構(gòu)是連續(xù)的,每一次插入或刪除數(shù)據(jù)就需要變更整個(gè)數(shù)組中的數(shù)據(jù)的位置(末尾插入和刪除除外)。

>3)應(yīng)用場景

? ? 應(yīng)用場景由他們的特點(diǎn)決定的。ArryList適用與查詢多的場景,而LinkedList適用與增刪的場景。


? ? 知識(shí)擴(kuò)展

? ? 1) 鏈表是物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)的、非順序的存儲(chǔ)結(jié)構(gòu)數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。

? ? 2) 鏈表的結(jié)構(gòu):鏈表是由很多節(jié)點(diǎn)構(gòu)成的,每個(gè)節(jié)點(diǎn)又包含兩部分,即數(shù)據(jù)和指針,數(shù)據(jù)存儲(chǔ)實(shí)際的數(shù)據(jù),指針保存下一個(gè)節(jié)點(diǎn)的位置。

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

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

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