Java容器類(類集)學(xué)習(xí)_第1頁(yè)
Java容器類(類集)學(xué)習(xí)_第2頁(yè)
Java容器類(類集)學(xué)習(xí)_第3頁(yè)
Java容器類(類集)學(xué)習(xí)_第4頁(yè)
Java容器類(類集)學(xué)習(xí)_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

---AHEADETPJAVATech-TeamJAVABASE13:容器類

內(nèi)容容器APICollection接口、Iterator接口Set接口List接口和Comparable接口Collections類Map泛型2容器API容器類:JAVAAPI所提供的用于存放對(duì)象的一系列類的實(shí)現(xiàn)。容器API:容器API位于java.util包內(nèi)容器API的類圖如下:3容器APICollection接口--定義了存取一組對(duì)象的方法,而其子接口Set和List分別定義了存儲(chǔ)的方式Set中的數(shù)據(jù)對(duì)象沒(méi)有重復(fù)且沒(méi)有順序List中的數(shù)據(jù)對(duì)象可以重復(fù)且有順序Map按口定義了存?。↘ey,value)對(duì)的方法Map并非繼承自Collection接口4Collection接口Collection接口中定義的方法

booleanadd(E

e)voidclear()booleanequals(Object

o)

Iterator<E>iterator()booleanretainAll(Collection<?>

c)intsize()Object[]toArray()

5Collection方法容器類對(duì)象在調(diào)用remove、contains等方法時(shí)需要比較對(duì)象是否相等,這會(huì)涉及到對(duì)象類型是否相等,這會(huì)涉及到對(duì)象類型的equals方法和hashCode方法;對(duì)于自定義的類型需要重寫(xiě)equals和hashCode方法以實(shí)現(xiàn)自定義的對(duì)象相等規(guī)則。注:相等的對(duì)象必須有相等的hashCode。例Cat.java6Iterator接口7所有實(shí)現(xiàn)了Collection接口的容器類都有一個(gè)iterator方法用以返回一個(gè)實(shí)現(xiàn)了Iterator接口的對(duì)象。Iterator對(duì)象稱作迭代器,用以方便的實(shí)現(xiàn)對(duì)容器內(nèi)元素的遍歷操作。Iterator接口定義了如下方法:booleanhasNext();//判斷游標(biāo)右邊是否有元素Objectnext();//返回游標(biāo)右邊的元素并將游標(biāo)移動(dòng)到下一個(gè)位置Voidremove();//刪除游標(biāo)左面的元素,在執(zhí)行完next之后該操作只能執(zhí)行一次Iterator接口Iterator對(duì)象的remove方法是在迭代過(guò)程中刪除元素的唯一安全方法。remove方法的兩種異常UnsupportedOperationException–如果迭代器不支持remove操作。IllegalStateException–如果沿未調(diào)用next方法,或者在上一次調(diào)用next方法之后已經(jīng)調(diào)用了remove方法。8Set接口Set接口是Collection的子接口,Set接口沒(méi)有提供額外的方法,但實(shí)現(xiàn)Set接口的容器類中的元素是沒(méi)有順序的,而且不可以重復(fù)。Set容器可以與數(shù)學(xué)中“集合”的概念相對(duì)應(yīng)。JAVAAPI所提供的Set容器類有HashSet,TreeSet等9List接口List接口是Collection的子接口,實(shí)現(xiàn)List接口的容器類中的元素是有順序的,而且可以重復(fù)。List容器中的元素都對(duì)應(yīng)一個(gè)整數(shù)型的序號(hào)記載其在容器中的位置,可以根據(jù)序號(hào)存取容器中的元素。JDK所提供的List容器類有ArrayList,LinkedList等。Objectget(intindex);Objectset(intindex,Objectelement);voidadd(intindex,Objectelement);Objectremove(intindex);intindexOf(Objecto);intlastIndexOf(Objecto);10ArrayListArrayList是一種很好的基本列表實(shí)現(xiàn),它在一個(gè)數(shù)組中保存其元素,相當(dāng)于大小可變數(shù)組。ArrayList有一個(gè)容量(capacity),是它不需要為更大數(shù)組分配內(nèi)存的情況下所能容納的元素?cái)?shù)量。添加元素時(shí)它們被保存到數(shù)組中,但是當(dāng)空間溢出時(shí),必須分配一個(gè)新的數(shù)組來(lái)代替原數(shù)組。因此恰當(dāng)?shù)卦O(shè)置初始容量可以提高性能。11ArrayListArrayList的構(gòu)造函數(shù)ArrayList()構(gòu)造一個(gè)初始容量為10的空列表。ArrayList(Collection

c)構(gòu)造一個(gè)包含指定collection的元素的列表,這些元素是按照該collection的迭代器返回它們的順序排列的。ArrayList(int

initialCapacity)構(gòu)造一個(gè)具有指定初始容量的空列表。12LinkedList13LinkedList是一個(gè)雙向鏈表LinkedList的構(gòu)造函數(shù):LinkedList()

構(gòu)造一個(gè)空列表。LinkedList(Collection

c)構(gòu)造一個(gè)包含指定collection中的元素的列表,這些元素按其collection的迭代器返回的順序排列。Collections類java.util.Collections提供了一些靜態(tài)方法實(shí)現(xiàn)了基于List容器的一些常用算法。voidsort(List)對(duì)容器內(nèi)的元素排序voidshuffle(List)對(duì)List容器內(nèi)的對(duì)象進(jìn)行隨機(jī)排列voidreverse(List)對(duì)List容器內(nèi)的對(duì)象進(jìn)行逆序排列voidcopy(Listdest,Listsrc)將srclist容器內(nèi)容拷貝到destlist容器intbinarySearch(List,Object)對(duì)于順序的List容器,采用折半查找的方法查找一個(gè)對(duì)象例14Comparable接口容器中的對(duì)象排序是根據(jù)什么來(lái)確定先后順序呢?所有可以“排序”的類都實(shí)現(xiàn)了java.lang.Comparable接口,Camparable接口中只有一個(gè)方法:publicintcompareTo(Objectobj)返回0表示this==obj返回正數(shù)表示this>obj返回負(fù)數(shù)表示this<obj實(shí)現(xiàn)了Comparable接口的類通過(guò)實(shí)現(xiàn)compareTo方法從而確定該類對(duì)象的排序方式。例Cat.java、TestListCollections.java15Map接口實(shí)現(xiàn)Map接口的類用來(lái)存儲(chǔ)鍵-值對(duì)。Map接口的實(shí)現(xiàn)類有HashMap和TreeMap等。Map類中存儲(chǔ)的鍵-值對(duì)通過(guò)鍵來(lái)標(biāo)識(shí),所以鍵值不能重復(fù)。

Objectput(Objectkey,Objectvalue)將指定的值與此映射中的指定鍵關(guān)聯(lián)Objectget(Objectkey)返回指定鍵所映射的值;如果此映射不包含該鍵的映射關(guān)系,則返回null。Objectremove(Objectkey)如果存在一個(gè)鍵的映射關(guān)系,則將其從此映射中移除intsize()返回此映射中的鍵-值映射關(guān)系數(shù)。booleanisEmpty()如果此映射未包含鍵-值映射關(guān)系,則返回true。例16Map的存儲(chǔ)方式17Keyvaluekey1#############key2#############key5#############key3#############key4#############key6#############……HashMap的遍歷18HashMapm=newHashMap();Iteratoriter=m.entrySet().iterator();while(iter.hasNext()){Map.Entryme=(Map.Entry)iter.next();e=(Employee)me.getValue();System.out.println(e.toString());}泛型(Generic)泛型(Generic)。JDK1.5新增內(nèi)容在沒(méi)有泛型之前,多集合中讀取到的每一個(gè)對(duì)象都必須進(jìn)行轉(zhuǎn)換。如果不小心插入了類型錯(cuò)誤的對(duì)象,在運(yùn)行時(shí)的轉(zhuǎn)換處理就會(huì)出錯(cuò)泛型引進(jìn)來(lái)之后,可以告訴編譯器每個(gè)集合中接受哪些對(duì)象類型。編譯器自動(dòng)地為你的插入進(jìn)行轉(zhuǎn)化,并在編譯時(shí)告知是否插入了類型錯(cuò)誤的對(duì)象。19泛型的實(shí)現(xiàn)20List<String>strList=newArrayList<String>();Set<String>strSet=newHashSet<String>();Map<String,Integer>=newHashMap<String,Integer>();增強(qiáng)型for循環(huán)增強(qiáng)型for循環(huán)對(duì)于遍歷array或Collection的時(shí)候相當(dāng)簡(jiǎn)便缺陷數(shù)組:不能方便地訪問(wèn)下標(biāo)值集合:與使用Iterator相比,不能方便地刪除集合中的內(nèi)容在內(nèi)部也是調(diào)用Iterator總結(jié):除了簡(jiǎn)單遍歷并讀出其中的內(nèi)容外,不建議使用增強(qiáng)型for循環(huán)21java.util.Hashtable類

此類實(shí)現(xiàn)一個(gè)哈希表,除了可以像

HashMap那樣用put(),get()方法來(lái)訪問(wèn)列表的各個(gè)元素外,還實(shí)現(xiàn)了Enumeration接口。Hashtableht=newHashtable();Employeee=newEmployee();ht.put(“one”,e);22java.util.Enumeration接口Hashtable.elements()返回Enumeration接口Enumeration接口的方法:hasMoreElements()測(cè)試此枚舉是否包含更多的元素。nextElement()返回此枚舉的下一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論