1. 程式人生 > >JAVA的集合型別有哪些

JAVA的集合型別有哪些

Java API中所用的集合類,都是實現了Collection介面,他的一個類繼承結構如下:Collection<--List<--VectorCollection<--List<--ArrayListCollection<--List<--LinkedListCollection<--Set<--HashSetCollection<--Set<--HashSet<--LinkedHashSetCollection<--Set<--SortedSet<--TreeSetVector : 基於ArrayList

,其實就是封裝了Array所不具備的一些功能方便我們使用,它不可能走入Array的限制。效能也就不可能超越Array。所以,在可能的情況下,我們要多運用Array。另外很重要的一點就是Vector“sychronized”的,這個也是VectorArrayList的唯一的區別。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的對應儲存項。