版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
集合的输出赵翔宇从之前讲解的集合操作中我们应该可以发现,如果要输出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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理管理中的PDCA循环技巧
- 【中考真题】四川省达州2026年中考地理试题(解析版)
- 大肠癌患者的心理康复与支持
- 护理人员心理健康的自我提升方法
- 【高考真题】2024年海南省高考地理真题(含答案)
- 多发伤患者的肠外营养护理
- 2026生物求职面试题及答案
- 中国海洋大学海洋科教创新园区(西海岸校区)医药工程大楼实验室项目报告表
- 2026网络慈善面试题及答案
- 2026届山东省高三数学高考冲刺模拟试卷(含答案详解与评分标准)
- 广东省学校安全条例知识竞赛题库(附答案)
- 2026河南安阳市文峰区人力资源和社会保障局招聘公益性岗位人员20人笔试题库及完整答案详解(夺冠系列)
- 2026年外研版(三起)版小学英语六年级下册期末综合测试卷及答案(2套)
- 2026广西梧州供电局项目资料员招聘37人考试备考题库及答案详解
- 房地产企业资质申报:质量保证体系情况说明
- 数字人民币运营管理中心有限公司招聘笔试题库2026
- 《电路分析基础》网孔分析法
- 磁浮风机技术说明(招标专用)
- GB/T 4437.1-2023铝及铝合金热挤压管第1部分:无缝圆管
- NB-T 11022-2022 架空导线用绞合型碳纤维复合材料芯
- 生理学第四章第二节 心脏的泵血功能
评论
0/150
提交评论