版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六单元Iterator迭代器Iterator接□方法Iterator使用增强for循环前面学习的Collection接口、Set接口和List接口,它们的实现类都没有提供遍历集合元素的方法,Iterator迭代器为集合而生,是Java语言解决集合遍历的一个工具。它提供一种方法访问集合中各个元素,而不暴露该集合的内部实现细节。6.3.1Iterator接口方法6.3.1Iterator接口方法Collection接口的iterator()方法返回一个Iterator对象,通过Iterator接口的两个方法即可实现对集合元素的遍历。下面列举了Iterator接口的三个方法:●booleanhasNext()判断是否存在下一个可访问的数据元素。●Objectnext()返回要访问的下一个数据元素。●voidremove()从迭代器指向的collection集合中移除迭代器返回的最后一个数据元素。6.3.2Iterator使用接下来我们通过《租车系统》,讲解集合中Iterator迭代器的使用。假设《租车系统》有如下的需求调整:(1)系统里可以有若干辆轿车和卡车供用户租用。(2)系统管理员可以遍历这个系统里所有的车辆。
(3)遍历时是轿车,则显示轿车品牌,是卡车,则显示卡车吨位,同时完整显示车辆信息。6.3.2Iterator使用importjava.util.*;importorg.unitthree.*;classTestZuChe{publicstaticvoidmain(String[]args){//创建HashSet集合,甩于存放车辆SetvehSet=newHashSet();//创建2个轿车对象、2个卡车对象,并加入到HashSet集合中Vehiclec1=newCar("战神","长城");Vehiclec2=newCar("跑得快","红旗");Vehiclet1=newTruck("大力士","5吨");Vehiclet2=newTruck("大力士二代","10吨");vehSet.add(cl);vehSet.add(c2);vehSet.add(tl);vehSet.add(t2);//使用迭代器循环输出Iteratorit=vehSet.iterator();while(it.hasNext()){System.out.println("***显示集合中元素信息***");Objectobj=it.next();if(objinstanceofCar){Carcar=(Car)obj;//调用Car类的特有方法getBrand()System.out.println("该车是轿车,其品牌为:"+car.getBrand());}else{Trucktruck=(Truck)obj;//调用Truck类的特有方法getLoad()System.out.println("该车是卡车,其吨位为:"+truck.getLoad());}//调用Vehicle类方法show()((Vehicle)obj).show();}}}
在该段代码中,通过Iterator接口的hasNext()方法判断集合中是否还有对象元素,再通过该接口的next()方法获取这个对象元素。然后通过instanceof运算符,判断这个对象元素是轿车还是卡车,并显示轿车品牌或卡车吨位,最后调用这两个类共有的Show()方法显示车辆全部信息。6.3.2Iterator使用6.3.3增强for循环从JDK1.5开始,提供了另一种形式的for循环,这就是增强for循环,或称为foreach循环。借助增强foi循环,可以用更简单的方式来遍历数组和Collection集合中的对象。6.3.3增强for循环importjava.util.*;publicclassTestForEach{Publicstaticvoidmain(String[]args){String[]StuAn={"王云","刘静涛","南天华","雷静"};//传统for循环遍历for(inti=0;i<stuArr.length;i++){System.out.println(stuArr[i]);}//增强for循环遍历for(Stringstu;stuArr){System.out.println(stu);}SetnameSet=newHashSet();nameSet.add("王云");nameSet.add("刘静涛");nameSet.add("南天华");nameSet.add("雷静");//迭代器遍历Iteratorit=nameSet.iterator();while(it.hasNext()){System.out.printb(it.next());}//增强for循环遍历for(Objectstu2:nameSet){System.out.println((String)stu2);}}}下面我们用增强for循环与传统for循环做个比较。举一个非常简单的案例,一个数组(或集合)中存了四个学生的姓名字符串,分别用传统for循环和增强for循环,逐个显示学生姓名.6.3.3增强for循环通过代码可以看出,JDK1.5增强for循环使得代码短小且精炼,在遍历数组主集合的情况下,更加方便。但增强for循环在使用时,也有下面一些局限性,使用时需要注意。(1)在用传统for循环处理数组时,可以通过数组下标进行一些过程控制,例如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药物警戒测试题目及答案
- 数学考卷试题的意义及答案
- 专升本助教应聘面试题及参考答案
- 高中物理 加强练习第十一章 107.洛伦兹力作用下带电粒子的圆周运动
- 2025-2026学年开原市四年级数学第二学期期中质量跟踪监视试题含答案
- 2025-2026学年延川县三年级数学下学期期中学业质量监测试题(含答案)
- 手工技法专项试题及完整答案
- 店面运营培训测试题及答案解析
- 2025-2026学年平邑县四下数学期末达标测试试题(含答案)
- 2025-2026学年岷县数学四下期末监测试题(含答案解析)
- 2026年软考《系统架构设计师》基础知识真题
- 2026年秋统编版(新教材)道德与法治五年级上册(全册)分层作业及答案(附目录)
- 城市轨道交通站务员岗前能力评估考核试卷含答案
- 2026年房地产经纪人《房地产交易制度政策》考试真题(后附答案解析)
- 水利水电工程单元工程施工质量检验表与验收表(SLT631.5-2025)
- 施工现场设备、设施管理制度
- 言语治疗与兽医沟通障碍的干预技术模拟
- 安全应急装备产业发展研究报告(2025年)
- 2025-2026学年春季第二学期“1530”安全教育安排表(可打印版)
- 寺院用工合同范本
- 《中外设计史-外国篇》3
评论
0/150
提交评论