java的集合類有哪些他們之間的關係有什麼區別

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

Collection<--List<--Vector    數組實現 查詢快、增刪慢

Collection<--List<--ArrayList  數組實現 查詢快、增刪慢

Collection<--List<--LinkedList  鏈表結構 查詢慢、增刪快

Collection<--Set<--HashSet 自定義排序 對對象實現Comparable 重寫compareTo(Object o);

Collection<--Set<--HashSet<--LinkedHashSet 按照存放時的順序 輸出

Collection<--Set<--SortedSet<--TreeSet


Vector : 基於ArrayList,其實就是封裝了Array所不具備的一些功能方便我們使用,它不可能走入Array的限制。性能也就不可能

超越Array。所以,在可能的情況下,我們要多運用Array。另外很重要的一點就是Vector“sychronized”的,這個也是Vector

ArrayList的唯一的區別。

ArrayList:同Vector一樣是一個基於Array上的鏈表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector優越一些,但

是當運行到多線程環境中時,可需要自己在管理線程的同步問題。

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

面的內容:1.節點本身的數據(data);2.下一個節點的信息(nextNode)。所以當對LinkedList做添加,刪除動作的時候就不用像

基於ArrayList一樣,必須進行大量的數據移動。只要更改nextNode的相關信息就可以實現了。這就是LinkedList的優勢。

List總結:

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

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

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

4. 基於ArrayListVectorArrayList)適合查詢,而LinkedList(鏈表)適合添加,刪除操作。

HashSet:雖然SetList都實現了Collection接口,但是他們的實現方式卻大不一樣。List基本上都是以Array爲基礎。但是Set則是

HashMap的基礎上來實現的,這個就是SetList的根本區別。HashSet的存儲方式是把HashMap中的Key作爲Set的對應存儲項。

集合中,list  set Map

set 無序,元素不可以重複

HashSet : 無序,元素不重複,如果是自定義實體對象,需要重寫 hashCode() 和equals(Object obj)

TreeSet:自定義排序 對對象實現Comparable 重寫compareTo(Object o);

Map 以鍵值對形式存儲 

HashMap :會自動排序,鍵可以爲null

LinkedHashMap 按照存放時的順序 輸出

List 有順序、有下標、元素可以重複。

ArrayList【重點】

數組實現 查詢快、增刪慢

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

2) Vector

數組實現 查詢快、增刪慢

jdk1.0  線程安全、效率低

3) LinkedList

鏈表結構 查詢慢、增刪

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章