版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
集合的输出赵翔宇从之前讲解的集合操作中我们应该可以发现,如果要输出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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 红河学院《足球》2021-2022学年第一学期期末试卷
- 《多用电表》课件
- 药企新员工培训计划文档
- 小儿支气管炎健康教育
- 心理护理在助产中的应用效果分析
- 第02讲 三角恒等变换(和差公式、倍角公式、升降幂公式、辅助角公式)(教师版)-2025版高中数学一轮复习考点帮
- 2024公园场地出租合同
- 《班组样板管理》课件
- 《基因克隆工具酶》课件
- 《气压治疗仪的使用》课件
- 机械设备验收记录表(旋挖机)
- 基于深度学习的超短期太阳辐照度预测模型研究
- 吸收放散实验课件
- 3.1《让小车运动起来》优质课件
- 新形势下,如何做好一人一事思想政治工作
- 《基于核心素养高中物理实验教学实施素质教育的研究》结题总结报告
- 行政人事部工作分析表
- 英语漫谈胶东海洋文化知到章节答案智慧树2023年威海海洋职业学院
- 航空母舰优秀课件
- 2023年芒果TV春季校园招聘笔试参考题库附带答案详解
- 共享中国知到章节答案智慧树2023年上海工程技术大学
评论
0/150
提交评论