版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
集合的輸出趙翔宇從之前講解的集合操作中我們應該可以發(fā)現(xiàn),如果要輸出Collection、Set集合中的內容,可以將其轉化為對象數(shù)組輸出,而使用List則可以直接通過get()方法輸出,但是這些都不是集合的標準輸出方式。在類集中提供了以下四種的常見輸出方式:Iterator:迭代輸出,是使用最多的輸出方式;ListIterator:是Iterator的子接口,專門用于輸出List中的內容;Enumeration:是一個舊的接口,功能與Iterator類似;foreach:JDK1.5之后提供的新功能,可以輸出數(shù)組或集合。注意:4種輸出操作以Iterator為操作標準。以上雖然提供了4種輸出的操作,但是從實際的使用上來看,Iterator接口是最常使用的輸出形式。迭代輸出-Iterator1.Iterator接口簡介集合輸出的標準操作:“在使用集合輸出的時候必須形成以下的一個思路:‘只要是碰到了集合輸出的操作,就一定使用Iterator接口’,因為這是最標準的做法”Iterator接口的操作原理:Iterator是專門的迭代輸出接口,所謂的迭代輸出就是將元素一個個進行判斷,判斷其是否有內容,如果有內容則把內容取出了解了其基本原理之后,下面來看一下Iterator接口的定義:publicinterfaceIterator<E>Iterator在使用時也需要指定泛型,當然在此處指定的泛型類型需要與集合中的泛型類型一致。此接口定義了3個方法,如下所示:下面通過一些實例講解以上方法的作用,以及使用以上方法時的注意點。2.Iterator接口的相關操作實例操作一:輸出Collection中的全部內容Iterator是一個接口,可以直接使用Collection接口中定義的iterator()方法為其實例化。既然Collection接口中存在此方法,則List和Set子接口中也可以使用Iterator接口輸出。實例:進行輸出publicclassTest{publicstaticvoidmain(String[]args){List<String>all=newArrayList<String>();all.add("hello");all.add("_");all.add("world");Iterator<String>iter=all.iterator();while(iter.hasNext()){System.out.print(iter.next()+"、");}}}程序輸出結果:hello、_、world、以上的輸出代碼時Iterator的標準操作形式,將集合中的內容一個個的循環(huán)輸出。此種輸出也是必須掌握的形式。實例操作二:使用Iterator刪除指定的內容在Iterator接口中除了可以輸出內容之外,還可以刪除當前的內容,直接使用remove()方法即可。實例:刪除元素publicclassTest{publicstaticvoidmain(String[]args){List<String>all=newArrayList<String>();all.add("hello");all.add("_");all.add("world");Iterator<String>iter=all.iterator();while(iter.hasNext()){Stringstr=iter.next();if("_".equals(str)){iter.remove();}else{System.out.print(str+"、");}}System.out.println("\n刪除之后的集合"+all);}}程序運行結果:hello、world、刪除之后的集合[hello,world]實例操作三:迭代輸出時刪除元素的注意點正常情況下,一個集合要把內容交給Iterator輸出,但是集合操作中也存在一個remove()方法,如果在使用Iterator輸出時由集合對象調用了自身的刪除方法,則會出現(xiàn)運行時的錯誤。實例:不正確的刪除方法publicclassTest{publicstaticvoidmain(String[]args){List<String>all=newArrayList<String>();all.add("hello");all.add("_");all.add("world");Iterator<String>iter=all.iterator();while(iter.hasNext()){Stringstr=iter.next();if("_".equals(str)){all.remove(str);}else{System.out.print(str+"、");}}System.out.println("\n刪除之后的集合"+all);}}程序運行結果:hello、刪除之后的集合[hello,world]從程序的運行結果中可以發(fā)現(xiàn),內容確實被刪除了,但是迭代輸出在內容刪除之后就中止了。因為集合本身的內容被破壞,所以迭代將出現(xiàn)錯誤,會停止輸出。雙向迭代輸出-ListIterator1.ListIterator接口簡介Iterator接口的主要功能是由前向后單向輸出,而此時如果想實現(xiàn)由后向前或是由前向后的雙向輸出,則就必須使用Iterator的子接口——ListIterator。ListIterator接口定義如下:publicinterfaceListIterator<E>extendsIterator<E>此接口定義了比Iterator接口中更多的方法,方法定義如下所示:與Iterator接口不同的是,ListIterator接口只能通過List接口實例化,即:只能輸出List接口中的內容。在List接口中定義了可以為ListIterator接口的實例化方法:publicListIterator<E>listIterator()2.ListIterator接口相關操作實例操作一:進行雙向迭代使用ListIterator接口中的hasPrevious方法由后向前判斷,并使用previous方法取出前一個元素。實例:進行雙向迭代publicclassTest{publicstaticvoidmain(String[]args){List<String>all=newArrayList<String>();all.add("hello");all.add("_");all.add("world");ListIterator<String>iter=all.listIterator();System.out.print("由前向后輸出:");while(iter.hasNext()){Stringstr=iter.next();System.out.print(str+"、");}System.out.print("\n由后向前輸出:");while(iter.hasPrevious()){Stringstr=iter.previous();System.out.print(str+"、");}}}程序運行結果:由前向后輸出:hello、_、world、由后向前輸出:world、_、hello、以上程序實現(xiàn)了雙向的迭代輸出,但是此種輸出方式只有List接口才可以做到。注意:在使用ListIterator接口進行雙向輸出時,如果想完成由后向前輸出,則一定要先進行由前向后輸出。實例操作二:增加及替換元素使用add()或set()方法可以增加或替換集合中的元素,但是這樣的操作在開發(fā)中不建議使用。實例:增加及替換集合中的元素publicclassTest{publicstaticvoidmain(String[]args){List<String>all=newArrayList<String>();all.add("hello");all.add("_");all.add("world");ListIterator<String>iter=all.listIterator();System.out.print("由前向后輸出:");while(iter.hasNext()){Stringstr=iter.next();System.out.print(str+"、");iter.set("ZX-"+str);}System.out.print("\n由后向前輸出:");while(iter.hasPrevious()){Stringstr=iter.previous();System.out.print(str+"、");}}}程序運行結果:由前向后輸出:hello、_、world、由后向前輸出:ZX-world、ZX-_、ZX-hello、在ListIterator接口中使用set()方法修改了每個元素的內容,而且也可以使用ListIterator接口中的add()方法向集合中增加元素。Java新支持-foreach前面已經介紹過foreach的基本用法,使用foreach除了可以完成數(shù)組的輸出,對于集合也同樣支持。foreach的使用格式for(類對象:集合){ //集合操作
}實例:使用foreach輸出publicclassTest{publicstaticvoidmain(String[]args){List<String>all=newArrayList<String>();all.add("hello");all.add("_");all.add("world");for(Stringstring:all){System.out.print(string+"、");}}}程序運行結果:hello、_、world、雖然foreach輸出的功能強大,而且操作的代碼也比較簡單,但是從實際的開發(fā)上來講,還是建議大家使用Iterator接口完成輸出功能。廢棄的接口-EnumerationEnumeration接口是JDK1.0時就推出的,是最早的迭代輸出接口,最早使用Vector時就是使用Enumeration接口進行輸出的。Enumeration接口定義:publicinterfaceEnumeration<E>雖然Enumeration是一個舊的類,但是在JDK1.5之后為Enumeration類進行了擴充,增加了泛型的操作應用。主要方法如下所示:以上方法的功能與Iterator相似,只是Iterator中存在刪除數(shù)據(jù)的方法,而此接口并不存在刪除操作,而且可以發(fā)現(xiàn),這里方法名稱的定義要比Iterator中的方法名稱更長。想要使用此接口輸出只能通過Vector類,Vector類定義了以下的方法可以為Enumeration接口實例化:publicEnumeration<E>elements()實例:使用Enumeration輸出publicclassTest{publicstaticvoidmain(String[]args){Vector<String>all=newVector<String>();all.add("hello");all.add("_");all.add("world");Enumeration
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 紅木家具的購銷合同
- 貨物購買合同范文
- 有按揭的房屋買賣合同
- 房屋抵押擔保合同
- 2025福建省勞動合同書范本
- 2025廣東省林地承包合同
- 2025【合同協(xié)議范本】商品房買賣合同的補充協(xié)議怎么寫范本
- 游樂場地租賃合同樣本
- 2025廈門金龍聯(lián)合汽車工業(yè)有限公司加工合同
- 2025奶牛配合飼料批發(fā)合同
- 2024年英語高考全國各地完形填空試題及解析
- 2024至2030年中國餐飲管理及無線自助點單系統(tǒng)數(shù)據(jù)監(jiān)測研究報告
- 2024年服裝門店批發(fā)管理系統(tǒng)軟件項目可行性研究報告
- 體育概論(第二版)課件第三章體育目的
- 《氓》教學設計 2023-2024學年統(tǒng)編版高中語文選擇性必修下冊
- 化學元素周期表注音版
- T-GDASE 0042-2024 固定式液壓升降裝置安全技術規(guī)范
- 香港朗文4B單詞及句子
- 運動技能學習與控制課件第五章運動中的中樞控制
- 財務部規(guī)范化管理 流程圖
- 斷絕關系協(xié)議書范文參考(5篇)
評論
0/150
提交評論