版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六单元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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 基坑水平位移监测作业方案
- 傅雷家书读后心得感想(5篇)
- 钢材产品介绍课件
- 工程测量数据课件
- 工程材料检索步骤课件
- 工程材料流程详解课件
- 观察测量案例分享课件
- 河北省唐山市丰南区2026-2027学年上学期七年级语文期中试卷
- 2027年备考人力资源管理专业知识与实务 押题练习试题(备用卷)含答案
- 2027年备考VIP押题班.初级实务通关题库(附答案)
- 家庭保洁作业安全方案
- DELE A1西班牙语全真模拟试题(含详细答案解析)
- 2026年新疆中考语文真题及答案解析
- 2026年《安全员》考试试题及答案
- 出土坡道施工方案
- 物业应急指挥体系建设手册
- 关于手术室医疗废物泄漏的应急预案演练脚本
- 2026年新人教版三年级上册数学第五单元《线和角》教学设计
- 水利水电工程单元工程施工质量检验表与验收表(SLT631.5-2025)
- 2025年消防执法辅助员笔试题目及答案
- 2025兵团连队职工考试试题及答案解析
评论
0/150
提交评论