首頁 > Java > Java基礎 > 主體

java集合有哪些

angryTom
發布: 2019-11-14 10:10:40
原創
3422 人瀏覽過

java集合有哪些

java集合有哪些

Java API中所用的集合類,都是實作了Collection接口,他的一個類繼承結構如下: 

Collection

Collection

Collection

Collection

#Collection

Collection

Collection

##Vector

1) 底層資料結構是數組,查詢快,增刪慢

2)執行緒安全,效率低

基於Array的List,其實就是封裝了Array所不具備的一些功能方便我們使用,它不可能走入Array的限制。效能也就不可能超越Array。所以,在可能的情況下,我們要多運用Array。另外很重要的一點就是Vector「sychronized」的,這也是Vector和ArrayList的唯一的差別。 

ArrayList

1).底層資料結構是數組,查找快,增刪慢。

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

同Vector一樣是一個基於Array上的鍊錶,但是不同的是ArrayList不是同步的。所以在效能上要比Vector優越一些,但是當執行到多執行緒環境中時,可需要自己在管理執行緒的同步問題。


LinkedList

1) 底層資料結構是鍊錶,查詢慢,增刪快

2)執行緒不安全,效率高

LinkedList不同於前面兩種List,它不是基於Array的,所以不受Array效能的限制。它每一個節點(Node)都包含兩方面的內容:

1. 節點本身的資料(data);

2. 下一個節點的資訊(nextNode)。所以當LinkedList加入,刪除動作的時候就不用像基於Array的List一樣,必須進行大量的資料移動。只要更改nextNode的相關資訊就可以實現了。這就是LinkedList的優點。

Hashset集合:

1) 底層資料結構是雜湊表,雜湊表依賴兩個方法hascode ()和equals()方法

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

先判斷hascode()值是否相同

是:繼續執行equals()方法,看其傳回值

是true:說明元素重複,不加入

是false:就直接加入元素

#否:就直接加入集合

Treeset集合:

1)底層資料結構是二元樹

總結: 

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都實作了Collection接口,但是他們的實作方式卻大不相同。 List基本上都是以Array為基礎。但是Set則是在HashMap的基礎上來實現的,這個就是Set和List的根本差別。 HashSet的儲存方式是把HashMap中的Key當作Set的對應儲存項目。

php中文網,大量的免費

Java入門教學,歡迎線上學習! 

以上是java集合有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板