比較分析Vector、ArrayList和hashtable hashmap數據

Collection


........|--------List

........|..........|----------ArrayList

........|..........|----------Vector

........|..........|.............|-----Stack

........|..........|----------LinkedList

........|--------Set

...................|----------HashSet .

...................|.............|-----LinkedHashSet

...................|----------SortedSet

.................................|-----TreeSet


線性表,鏈表,哈希表是常用的數據結構,在進行Java開發時,JDK已經爲我們提供了一系列相應的類來實現基本的數據結構。這些類均在java.util包中。 
Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements)。
一些Collection允許相同的元素而另一些不行。一些能排序而另一些不行。
Java SDK不提供直接繼承自Collection的類,Java SDK提供的類都是繼承自Collection的子接口如List和Set。

所有實現Collection接口的類都必須提供兩個標準的構造函數:無參數的構造函數用於創建一個空的Collection,
有一個Collection參數的構造函數用於創建一個新的Collection,這個新的Collection與傳入的Collection有相同的元素。
後一個構造函數允許用戶複製一個Collection。

如何遍歷Collection中的每一個元素?不論Collection的實際類型如何,它都支持一個iterator()的方法,該方法返回一個迭代子,
使用該迭代子即可逐一訪問Collection中每一個元素。典型的用法如下:

    Iterator it = collection.iterator(); // 獲得一個迭代子
  while(it.hasNext()) {
      Object obj = it.next(); // 得到下一個元素
   }

  由Collection接口派生的兩個接口是List和Set。


List接口: List是有序的Collection,使用此接口能夠精確的控制每個元素插入的位置。
用戶能夠使用索引(元素在List中的位置,類似於數組下標)來訪問List中的元素,這類似於Java的數組。
和下面要提到的Set不同,List允許有相同的元素。
除了具有Collection接口必備的iterator()方法外,List還提供一個listIterator()方法,返回一個ListIterator接口,
和標準的Iterator接口相比,ListIterator多了一些add()之類的方法,允許添加,刪除,設定元素,還能向前或向後遍歷。
實現List接口的常用類有LinkedList,ArrayList,Vector和Stack。

LinkedList類:LinkedList實現了List接口,允許null元素。此外LinkedList提供額外的get,remove,insert方法在LinkedList的首部或尾部。
這些操作使LinkedList可被用作堆棧(stack),隊列(queue)或雙向隊列(deque)。
注意LinkedList沒有同步方法。如果多個線程同時訪問一個List,則必須自己實現訪問同步。
一種解決方法是在創建List時構造一個同步的List:
 List list = Collections.synchronizedList(new LinkedList(...));



發佈了17 篇原創文章 · 獲贊 4 · 訪問量 32萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章