溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

java中的集合有哪些

發(fā)布時間:2020-06-28 11:35:01 來源:億速云 閱讀:180 作者:Leah 欄目:編程語言

java中的集合有哪些?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Java API中所用的集合類,都是實(shí)現(xiàn)了Collection接口,他的一個類繼承結(jié)構(gòu)如下:

Collection<–List<–Vector

Collection<–List<–ArrayList

Collection<–List<–LinkedList

Collection<–Set<–HashSet

Collection<–Set<–HashSet<–LinkedHashSet

Collection<–Set<–SortedSet<–TreeSet

java中的集合有哪些

Vector

1) 底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查詢快,增刪慢

2)線程安全,效率低

基于Array的List,其實(shí)就是封裝了Array所不具備的一些功能方便我們使用,它不可能走入Array的限制。性能也就不可能超越Array。所以,在可能的情況下,我們要多運(yùn)用Array。另外很重要的一點(diǎn)就是Vector“sychronized”的,這個也是Vector和ArrayList的唯一的區(qū)別。

ArrayList

1).底層數(shù)據(jù)結(jié)構(gòu)是數(shù)組,查找快,增刪慢。

2). 線程不安全,效率高

同Vector一樣是一個基于Array上的鏈表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector優(yōu)越一些,但是當(dāng)運(yùn)行到多線程環(huán)境中時,可需要自己在管理線程的同步問題。

LinkedList

1) 底層數(shù)據(jù)結(jié)構(gòu)是鏈表,查詢慢,增刪快

2)線程不安全,效率高

LinkedList不同于前面兩種List,它不是基于Array的,所以不受Array性能的限制。它每一個節(jié)點(diǎn)(Node)都包含兩方面的內(nèi)容:

1. 節(jié)點(diǎn)本身的數(shù)據(jù)(data);

2. 下一個節(jié)點(diǎn)的信息(nextNode)。所以當(dāng)對LinkedList做添加,刪除動作的時候就不用像基于Array的List一樣,必須進(jìn)行大量的數(shù)據(jù)移動。只要更改nextNode的相關(guān)信息就可以實(shí)現(xiàn)了。這就是LinkedList的優(yōu)勢。

Hashset集合:

1) 底層數(shù)據(jù)結(jié)構(gòu)是哈希表,哈希表依賴兩個方法hascode ()和equals()方法

2)兩個方法的執(zhí)行順序:

首先判斷hascode()值是否相同

是:繼續(xù)執(zhí)行equals()方法,看其返回值

是true:說明元素重復(fù),不添加

是false:就直接添加元素

否:就直接添加到集合

Treeset集合:

1)底層數(shù)據(jù)結(jié)構(gòu)是二叉樹

總結(jié):

1. 所有的List中只能容納單個不同類型的對象組成的表,而不是Key-Value鍵值對。例如:[ tom,1,c ];

2. 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ];

3. 所有的List中可以有null元素,例如[ tom,null,1 ];

4. 基于Array的List(Vector,ArrayList)適合查詢,而LinkedList(鏈表)適合添加,刪除操作。

HashSet:雖然Set同List都實(shí)現(xiàn)了Collection接口,但是他們的實(shí)現(xiàn)方式卻大不一樣。List基本上都是以Array為基礎(chǔ)。但是Set則是在HashMap的基礎(chǔ)上來實(shí)現(xiàn)的,這個就是Set和List的根本區(qū)別。HashSet的存儲方式是把HashMap中的Key作為Set的對應(yīng)存儲項(xiàng)。

關(guān)于java中的集合有哪些問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI