java中的集合類
在java.util中共有9個(gè)類可以用來管理對(duì)象集合描述
類 HashSet 使用HashMap的一個(gè)集的實(shí)現(xiàn)。雖然集定義成無序,但必須存在某種方法能相當(dāng)高效地找到一個(gè)對(duì)象。使用一個(gè)HashMap對(duì)象實(shí)現(xiàn)集的存儲(chǔ)和檢索操作是在固定時(shí)間內(nèi)實(shí)現(xiàn)的.
TreeSet 在集中以升序?qū)?duì)象排序的集的實(shí)現(xiàn)。這意味著從一個(gè)TreeSet對(duì)象獲得第一個(gè)迭代器將按升序提供對(duì)象。TreeSet類使用了一個(gè)TreeMap.
表 Vector 實(shí)現(xiàn)一個(gè)類似數(shù)組一樣的表,自動(dòng)增加容量來容納你所需的元素。使用下標(biāo)存儲(chǔ)和檢索對(duì)象就象在一個(gè)標(biāo)準(zhǔn)的數(shù)組中一樣。你也可以用一個(gè)迭代器從一個(gè)Vector中檢索對(duì)象。Vector是唯一的同步容器類??當(dāng)兩個(gè)或多個(gè)線程同時(shí)訪問時(shí)也是性能良好的。
Stsck 這個(gè)類從Vector派生而來,并且增加了方法實(shí)現(xiàn)棧??一種后進(jìn)先出的存儲(chǔ)結(jié)構(gòu)。
LinkedList 實(shí)現(xiàn)一個(gè)鏈表。由這個(gè)類定義的鏈表也可以像棧或隊(duì)列一樣被使用。
ArrayList 實(shí)現(xiàn)一個(gè)數(shù)組,它的規(guī)模可變并且能像鏈表一樣被訪問。它提供的功能類似Vector類但不同步。
映 象 HashTable 實(shí)現(xiàn)一個(gè)映象,所有的鍵必須非空。為了能高效的工作,定義鍵的類必須實(shí)現(xiàn)hashcode()方法和equal()方法。這個(gè)類是前面java實(shí)現(xiàn)的一個(gè)繼承,并且通常能在實(shí)現(xiàn)映象的其他類中更好的使用。
HashMap 實(shí)現(xiàn)一個(gè)映象,允許存儲(chǔ)空對(duì)象,而且允許鍵是空(由于鍵必須是唯一的,當(dāng)然只能有一個(gè))。
WeakHashMap 實(shí)現(xiàn)這樣一個(gè)映象:通常如果一個(gè)鍵對(duì)一個(gè)對(duì)象而言不再被引用,鍵/對(duì)象對(duì)將被舍棄。這與HashMap形成對(duì)照,映象中的鍵維持鍵/對(duì)象對(duì)的生命周期,盡管使用映象的程序不再有對(duì)鍵的引用,并且因此不能檢索對(duì)象。
TreeMap 實(shí)現(xiàn)這樣一個(gè)映象,對(duì)象是按鍵升序排列的。
Java.util包中的迭代器(Iteraor)接口描述了三種方法:
方法 描述
Next() 從第一個(gè)開始返回一個(gè)Object類型的對(duì)象,并且設(shè)置迭代器對(duì)象在下次調(diào)用該方法時(shí)返回下一個(gè)對(duì)象。若這個(gè)方法沒有對(duì)象返回,則拋出一個(gè)NoSuchElementException異常。
HasNext() 若調(diào)用next()方法檢索到下一個(gè)對(duì)象,則返回ture.
Remove() 在提供迭代器對(duì)象的集合中刪除由next()方法返回的最后一個(gè)對(duì)象。若沒有調(diào)用next()或調(diào)用next()后你調(diào)用了兩次remove(),則會(huì)拋出IllegaStateException異常。不是所有的迭代器都支持這個(gè)方法,如果不支持,你卻調(diào)用了該方法,會(huì)拋出UnsupportedOperation異常。