JAVA數據結構有以下幾種:
1、List:
List是有序的Collection,使用此接口能夠精確的控制每個元素插入的位置。用戶能夠使用索引(元素在List中的位置,類似於數組下 >標)來訪問List中的元素,這類似於Java的數組。
2、Vector:
基於數組(Array)的List,其實就是封裝了數組所不具備的壹些功能方便我們使用,所以它難易避免數組的限制,同時性能也不可能超越數組。
另外很重要的壹點就是Vector是線程同步的(sychronized)的,這也是Vector和ArrayList 的壹個的重要區別。?
3、ArrayList:
同Vector壹樣是壹個基於數組上的鏈表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector好壹些,但是當運行到多線程環境中時,可需要自己在管理線程的同步問題。
4、LinkedList:
LinkedList不同於前面兩種List,它不是基於數組的,所以不受數組性能的限制。 它每壹個節點(Node)都包含兩方面的內容:節點本身的數據(data),下壹個節點的信息(nextNode)。?
所以當對LinkedList做添加,刪除動作的時候就不用像基於數組的ArrayList壹樣,必須進行大量的數據移動。只要更改nextNode的相關信息就可以實現了,這是LinkedList的優勢。
5、HashSet:
雖然Set同List都實現了Collection接口,但是他們的實現方式卻大不壹樣。List基本上都是以Array為基礎。
但是Set則是在 HashMap的基礎上來實現的,這就是Set和List的根本區別。HashSet的存儲方式是把HashMap中的Key作為Set的對應存儲項。
6、HashMap:
基於哈希表的 Map 接口的實現。此實現提供所有可選的映射操作,並允許使用 null 值和 null 鍵。(除了不同步和允許使用 null 之外,HashMap 類與 Hashtable 大致相同。)此類不保證映射的順序,特別是它不保證該順序恒久不變。
7、HashTable:
Hashtable 是壹個散列表,它存儲的內容是鍵值對(key-value)映射。Hashtable 繼承於Dictionary,實現了Map、Cloneable、java.io.Serializable接口。
Hashtable 的函數都是同步的,這意味著它是線程安全的。它的key、value都不可以為nul