版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
集合的输出赵翔宇从之前讲解的集合操作中我们应该可以发现,如果要输出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年中新集团工程咨询有限责任公司招聘备考题库及一套参考答案详解
- 2026年吉安市文化传媒集团有限责任公司公开招聘劳务派遣工作人员5人备考题库带答案详解
- 2026年中原关键金属实验室公开招聘工作人员10人备考题库含答案详解
- 2026年共和县东巴卫生院乡村医生招聘备考题库及1套完整答案详解
- 2025年兰陵县神山镇公开选拔“青年干部、青年党员、青年人才”备考题库及一套完整答案详解
- 2025年钱江海关招聘编外人员备考题库及一套参考答案详解
- 2026年巧家县第五高级中学招聘备考题库及一套完整答案详解
- 2026年丹东市人力资源和社会保障局公开选聘法律顾问备考题库及一套答案详解
- 安徽省合肥市蜀山区2024-2025学年上学期八年级数学期末试卷
- 有限空间大型污水井作业工岗位考试试卷及答案
- 车险组长年终工作总结
- 电商售后客服主管述职报告
- 2025昆明市呈贡区城市投资集团有限公司及下属子公司第一批招聘(12人)笔试考试参考试题及答案解析
- 上海证券有限责任公司校招职位笔试历年参考题库附带答案详解
- 保安员冬季安全知识培训课件
- 智慧园区项目合作协议书
- 遗体火化师招聘考核试卷及答案
- 2025年大学消防指挥专业题库- 火灾现场搜救与救援
- 2024-2025学年山东省聊城市临清市七年级(上)期末数学试卷(含答案)
评论
0/150
提交评论