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中文網其他相關文章!