版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
集合的输出赵翔宇从之前讲解的集合操作中我们应该可以发现,如果要输出Collection、Set集合中的内容,可以将其转化为对象数组输出,而使用List则可以直接通过get()方法输出,但是这些都不是集合的标准输出方式。在类集中提供了以下四种的常见输出方式:Iterator:迭代输出,是使用最多的输出方式;ListIterator:是Iterator的子接口,专门用于输出List中的内容;Enumeration:是一个旧的接口,功能与Iterator类似;foreach:JDK1.5之后提供的新功能,可以输出数组或集合。注意: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的标准操作形式,将集合中的内容一个个的循环输出。此种输出也是必须掌握的形式。实例操作二:使用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输出时由集合对象调用了自身的删除方法,则会出现运行时的错误。实例:不正确的删除方法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]从程序的运行结果中可以发现,内容确实被删除了,但是迭代输出在内容删除之后就中止了。因为集合本身的内容被破坏,所以迭代将出现错误,会停止输出。双向迭代输出-ListIterator1.ListIterator接口简介Iterator接口的主要功能是由前向后单向输出,而此时如果想实现由后向前或是由前向后的双向输出,则就必须使用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、以上程序实现了双向的迭代输出,但是此种输出方式只有List接口才可以做到。注意:在使用ListIterator接口进行双向输出时,如果想完成由后向前输出,则一定要先进行由前向后输出。实例操作二:增加及替换元素使用add()或set()方法可以增加或替换集合中的元素,但是这样的操作在开发中不建议使用。实例:增加及替换集合中的元素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除了可以完成数组的输出,对于集合也同样支持。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输出的功能强大,而且操作的代码也比较简单,但是从实际的开发上来讲,还是建议大家使用Iterator接口完成输出功能。废弃的接口-EnumerationEnumeration接口是JDK1.0时就推出的,是最早的迭代输出接口,最早使用Vector时就是使用Enumeration接口进行输出的。Enumeration接口定义:publicinterfaceEnumeration<E>虽然Enumeration是一个旧的类,但是在JDK1.5之后为Enumeration类进行了扩充,增加了泛型的操作应用。主要方法如下所示:以上方法的功能与Iterator相似,只是Iterator中存在删除数据的方法,而此接口并不存在删除操作,而且可以发现,这里方法名称的定义要比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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中铁华铁工程设计集团有限公司区域指挥部招聘备考题库含答案详解(典型题)
- 2026重庆大学附属江津医院医院自聘岗位招聘16人备考题库附答案详解(考试直接用)
- 2026福建省寿宁县教育局补充招聘紧缺急需及高层次教师5人备考题库含答案详解(黄金题型)
- 2026中国科学院广州地球化学研究所党务综合管理岗招聘1人备考题库及参考答案详解1套
- 2026上海上海文化广场招聘工作人员备考题库及一套答案详解
- 2026年合肥市长江路第三小学海棠花园校区招聘教师备考题库附答案详解(完整版)
- 2026年4月广西百色市田阳区城镇公益性岗位人员招聘3人备考题库及答案详解(网校专用)
- 2026江苏南通古港文化旅游发展有限公司招聘劳务派遣人员5人备考题库含答案详解(夺分金卷)
- 2026深圳联通春季校园招聘备考题库及答案详解(典优)
- 2026浙江台州市荣远客运有限公司招聘备考题库及答案详解(夺冠)
- 2026年血站上岗证测试卷【巩固】附答案详解
- 《年历、月历中的信息》教案-2025-2026学年苏教版小学三年级数学下册
- 消防大队保密工作制度
- 2026年国家药品监督管理局药品和医疗器械审评检查京津冀分中心、华中分中心、西南分中心公开招聘编外人员122名(第一批)笔试参考试题及答案解析
- 2026年春教科版(新教材)小学科学三年级下册(全册)知识点复习要点梳理
- 中国脑外伤康复指南(2025版)
- 2026校招:华夏银行笔试题及答案
- 2026年吉林电子信息职业技术学院单招职业技能考试题库带答案详解(预热题)
- 医美考核制度模板
- 2026秋招:东方航空笔试题及答案
- 2025年北京市西城区中考化学模拟卷
评论
0/150
提交评论