資源描述:
《java_Set,List,Map,Vector,ArrayList的區(qū)別》由會員上傳分享,免費在線閱讀,更多相關內容在應用文檔-天天文庫。
1、-----用心做文檔值得下載值得擁有-------JAVA的容器---List,Map,SetCollection├List│├LinkedList│├ArrayList│└Vector│ └Stack└SetMap├Hashtable├HashMap└WeakHashMapCollection接口 Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements)。一些Collection允許相同的元素而另一些不行。一些能排序而另一些不行。JavaSDK
2、不提供直接繼承自Collection的類,JavaSDK提供的類都是繼承自Collection的“子接口”如List和Set。 所有實現(xiàn)Collection接口的類都必須提供兩個標準的構造函數(shù):無參數(shù)的構造函數(shù)用于創(chuàng)建一個空的Collection,有一個Collection參數(shù)的構造函數(shù)用于創(chuàng)建一個新的Collection,這個新的Collection與傳入的Collection有相同的元素。后一個構造函數(shù)允許用戶復制一個Collection?! ∪绾伪闅vCollection中的每一個元素?不論Collection的實際類
3、型如何,它都支持一個iterator()的方法,該方法返回一個迭代子,使用該迭代子即可逐一訪問Collection中每一個元素。典型的用法如下: Iteratorit=collection.iterator();//獲得一個迭代子 while(it.hasNext()){ Objectobj=it.next();//得到下一個元素 } 由Collection接口派生的兩個接口是List和Set。-----用心做文檔值得下載值得擁有-------List接口 List是有序的Collection
4、,使用此接口能夠精確的控制每個元素插入的位置。用戶能夠使用索引(元素在List中的位置,類似于數(shù)組下標)來訪問List中的元素,這類似于Java的數(shù)組。和下面要提到的Set不同,List允許有相同的元素?! 〕司哂蠧ollection接口必備的iterator()方法外,List還提供一個listIterator()方法,返回一個ListIterator接口,和標準的Iterator接口相比,ListIterator多了一些add()之類的方法,允許添加,刪除,設定元素,還能向前或向后遍歷?! 崿F(xiàn)List接口的常用類有L
5、inkedList,ArrayList,Vector和Stack。LinkedList類 LinkedList實現(xiàn)了List接口,允許null元素。此外LinkedList提供額外的get,remove,insert方法在LinkedList的首部或尾部。這些操作使LinkedList可被用作堆棧(stack),隊列(queue)或雙向隊列(deque)?! ∽⒁釲inkedList沒有同步方法。如果多個線程同時訪問一個List,則必須自己實現(xiàn)訪問同步。一種解決方法是在創(chuàng)建List時構造一個同步的List: List
6、list=Collections.synchronizedList(newLinkedList(...));ArrayList類 ArrayList實現(xiàn)了可變大小的數(shù)組。它允許所有元素,包括null。ArrayList沒有同步。size,isEmpty,get,set方法運行時間為常數(shù)。但是add方法開銷為分攤的常數(shù),添加n個元素需要O(n)的時間。其他的方法運行時間為線性?! ∶總€ArrayList實例都有一個容量(Capacity),即用于存儲元素的數(shù)組的大小。這個容量可隨著不斷添加新元素而自動增加,但是增長算法并沒有
7、定義。當需要插入大量元素時,在插入前可以調用ensureCapacity方法來增加ArrayList的容量以提高插入效率。 和LinkedList一樣,ArrayList也是非同步的(unsynchronized)。Vector類 Vector非常類似ArrayList,但是Vector是同步的。由Vector創(chuàng)建的Iterator,雖然和ArrayList創(chuàng)建的Iterator是同一接口,但是,因為Vector是同步的,當一個Iterator被創(chuàng)建而且正在被使用,另一個線程改變了Vector的狀態(tài)(例如,添加或刪除了一
8、些元素),這時調用Iterator的方法時將拋出ConcurrentModificationException,因此必須捕獲該異常。-----用心做文檔值得下載值得擁有-------Stack類 Stack繼承自Vector,實現(xiàn)一個后進先出的堆棧。Stack提供5個額外的方法使得Vec