版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章集合框架预习检查List、Map是否都继承自Collection接口?和数组采用相同存储结构的集合类型是什么?Iterator接口的作用是什么?集中测试2/39回顾与作业点评2-1写出运行结果
publicclassTest{ publicstaticvoidmain(Stringargs[]){ inta[]={0,1,2,3,4}; intsum=0; try{ for(inti=1;i<6;i++){ sum=sum+a[i]; } System.out.println("sum="+sum); }catch(ArrayIndexOutOfBoundsExceptione){ System.out.println("数组越界"); }finally{ System.out.println("程序结束"); } }}数组越界程序结束publicclassTest{ publicstaticvoidmain(String[]args){ intnumOne=10; intnumTwo=0; try{ intc=numOne/numTwo; }catch(ArithmeticExceptionex){ System.out.println("除数不能为0"); }catch(Exceptionex){ System.out.println("发现异常"); }finally{ System.out.println("这是finally"); } }}除数能不为0这是finallypublicclassTest{publicvoidadd(inti)throwsNullPointerException{ if(i==0) thrownewNullPointerException();System.out.println("add出现异常");}publicstaticvoidmain(String[]args){Testt=newTest();try{t.add(0);System.out.println("add方法返回");}catch(Exceptione){System.out.println("捕获异常");}}}捕获异常代码阅读3/39回顾与作业点评2-2点评作业的提交情况和共性问题作业点评4/39本章任务使用List保存和输出宠物信息根据宠物昵称查找宠物使用Iterator迭代显示存储在Map中的企鹅信息使用泛型集合显示存储在Map中的企鹅信息5/39本章目标掌握集合框架包含的内容掌握ArrayList和LinkedList的使用掌握HashMap的使用掌握Iterator的使用掌握泛型集合的使用6/39为什么使用集合框架学员1学员20代码1……代码N如何存储每天的新闻信息?如何存储ACCP课程的代码与课程信息,能够通过代码方便地获得课程信息?如果并不知道程序运行时会需要多少对象,或者需要更复杂方式存储对象——可以使用Java集合框架一维数组课程1……课程N一一对应新闻1……新闻N每天的新闻总数不确定,太少浪费空间,太多空间不足存储一个班学员信息,假定一个班容纳20名学员7/391接口CollectionMap2具体类3算法Collections提供了对集合进行排序、遍历等多种算法实现Java集合框架包含的内容2-1ListSetArrayListLinkedListHashMapTreeSetHashSetTreeMapJava集合框架提供了一套性能优良、使用方便的接口和类,它们位于java.util包中8/39Java集合框架包含的内容2-2Collection接口存储一组不唯一,无序的对象List接口存储一组不唯一,有序(插入顺序)的对象Set接口存储一组唯一,无序的对象Map接口存储一组键值对象,提供key到value的映射CollectionListMapSet9/39List接口的实现类ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高LinkedList采用链表存储方式。插入、删除元素时效率比较高ListArrayListLinkedList10/39ArrayList集合类5-1如何存储多条狗狗信息,获取狗狗总数,逐条打印出各条狗狗信息?通过List接口的实现类ArrayList实现该需求元素个数不确定要求获得元素的实际个数按照存储顺序获取并打印元素信息问题分析演示示例1:使用ArrayList集合类111/39ArrayList集合类5-2//创建四个狗狗对象
……
Listdogs=newArrayList();dogs.add(ououDog);dogs.add(yayaDog);dogs.add(meimeiDog);dogs.add(2,feifeiDog);//添加feifeiDog到指定位置 System.out.println("共计有"+dogs.size()+"条狗狗。");System.out.println("分别是:");for(inti=0;i<dogs.size();i++){ Dogdog=
(Dog)dogs.get(i); ……}
创建ArrayList对象并存储狗狗输出狗狗的数量逐个获取个元素小结:使用ArrayList存储元素12/39ArrayList集合类5-3扩充以下几部分功能删除指定位置的狗狗,如第一个狗狗删除指定的狗狗,如删除feifeiDog对象判断集合中是否包含指定狗狗使用List接口提供的remove()、contains()方法问题分析演示示例2:使用ArrayList集合类213/39ArrayList集合类5-4…… dogs.remove(0);dogs.remove(feifeiDog);……
if(dogs.contains(meimeiDog)) System.out.println("\n集合中包含美美的信息");else System.out.println("\n集合中不包含美美的信息");删除第一个狗狗和指定狗狗判断是否包含指定狗狗小结:使用ArrayList移除、判断元素14/39ArrayList集合类5-5List接口常用方法方法名说明booleanadd(Objecto)在列表的末尾顺序添加元素,起始索引位置从0开始voidadd(int
index,Objecto)在指定的索引位置添加元素。索引位置必须介于0和列表中元素个数之间intsize()返回列表中的元素个数Objectget(intindex)返回指定索引位置处的元素。取出的元素是Object类型,使用前需要进行强制类型转换booleancontains(Objecto)判断列表中是否存在指定元素booleanremove(Objecto)从列表中删除元素Object remove(intindex)从列表中删除指定位置元素,起始索引位置从0开始15/39学员操作——使用List存储企鹅信息需求说明把多个企鹅的信息添加到集合中查看企鹅的数量及所有企鹅的信息删除集合中部分企鹅的元素判断集合中是否包含指定企鹅练习完成时间:20分钟16/39共性问题集中讲解常见问题及解决办法代码规范问题调试技巧共性问题集中讲解17/39LinkedList集合类3-1在集合任何位置(头部、中间、尾部)添加、获取、删除狗狗对象插入、删除操作频繁时,可使用LinkedList来提高效率LinkedList提供对头部和尾部元素进行添加和删除操作的方法问题分析演示示例3:使用LinkedList集合类18/39LinkedList集合类3-2//创建多个狗狗对象……
LinkedListdogs=newLinkedList();dogs.add(ououDog);dogs.add(yayaDog);
dogs.addLast(meimeiDog);dogs.addFirst(feifeiDog);
DogdogFirst=(Dog)dogs.getFirst();System.out.println("第一条狗狗昵称是"+dogFirst.getName());
DogdogLast=(Dog)dogs.getLast();System.out.println("最后一条狗狗昵称是"+dogLast.getName());
dogs.removeFirst();dogs.removeLast();
创建LinkedList集合对象并存储狗狗对象获取第一条狗狗信息获取最后一条狗狗信息删除第一个狗狗和最后一个狗狗 小结:使用LinkedList存储元素19/39LinkedList集合类3-3LinkedList的特殊方法方法名说明voidaddFirst(Objecto)在列表的首部添加元素voidaddLast(Objecto)在列表的末尾添加元素ObjectgetFirst()返回列表中的第一个元素ObjectgetLast()返回列表中的最后一个元素ObjectremoveFirst()删除并返回列表中的第一个元素ObjectremoveLast()删除并返回列表中的最后一个元素20/39小结集合框架有何好处?Java集合框架中包含哪些接口和类?ArrayList和LinkedList有何异同?提问21/39Map接口3-1建立国家英文简称和中文全名间的键值映射,并通过key对value进行操作,应该如何实现数据的存储和操作呢?Map接口专门处理键值映射数据的存储,可以根据键实现对值的操作最常用的实现类是HashMap问题分析演示示例4:使用HashMap集合类22/39Map接口3-2
Mapcountries=newHashMap();countries.put("CN","中华人民共和国");countries.put("RU","俄罗斯联邦");countries.put("FR","法兰西共和国");countries.put("US","美利坚合众国");
Stringcountry=(String)countries.get("CN");……
System.out.println("Map中共有"+countries.size()+"组数据");
countries.remove("FR");System.out.println("Map中包含FR的key吗?"+
countries.containsKey("FR"));
System.out.println(countries.keySet());System.out.println(countries.values());System.out.println(countries
);使用HashMap存储多组键值对获取Map元素个数删除指定元素,判断是否包含指定元素显示键集、值集和键值对集获取指定元素的值小结:使用HashMap存储元素23/39Map接口3-3Map接口常用方法方法名说明Objectput(Objectkey,Objectval)以“键-值对”的方式进行存储Objectget(Objectkey)根据键返回相关联的值,如果不存在指定的键,返回nullObjectremove(Objectkey)删除由指定的键映射的“键-值对”intsize()返回元素个数SetkeySet()返回键的集合Collectionvalues()返回值的集合boolean
containsKey(Objectkey)如果存在由指定的键映射的“键-值对”,返回true24/39学员操作——根据宠物昵称查找宠物需求说明根据宠物昵称查找对应宠物,如果找到,显示宠物信息,否则给出错误提示练习完成时间:15分钟25/39共性问题集中讲解常见问题及解决办法代码规范问题调试技巧共性问题集中讲解26/39迭代器Iterator2-1如何遍历Map集合呢?方法1:通过迭代器Iterator实现遍历获取Iterator:Collection接口的iterator()方法Iterator的方法booleanhasNext():判断是否存在另一个可访问的元素Objectnext():返回要访问的下一个元素方法2:增强for循环问题分析演示示例5:使用Iterator和增强型for循环遍历Map集合27/39迭代器Iterator2-2Set
keys=dogMap.keySet();//取出所有key的集合Iteratorit=keys.iterator();//获取Iterator对象while(it.hasNext()){ Stringkey=(String)it.next();//取出key Dogdog=(Dog)dogMap.get(key);//根据key取出对应的值 System.out.println(key+"\t"+dog.getStrain());}for(元素类型t元素变量x:数组或集合对象){
引用了x的java语句}28/39小结:遍历Map迭代器Iterator增强for循环语法学员操作—使用Iterator迭代Map中的企鹅信息需求说明使用HashMap存储多个企鹅信息,然后统一使用Iterator进行遍历练习完成时间:15分钟29/39共性问题集中讲解常见问题及解决办法代码规范问题调试技巧共性问题集中讲解30/39泛型集合3-1如何解决以下强制类型转换时容易出现的异常问题?List的get(intindex)方法获取元素Map的get(Objectkey)方法获取元素Iterator的next()方法获取元素通过泛型JDK1.5使用泛型改写了集合框架中的所有接口和类问题分析演示示例6:使用泛型集合31/39泛型集合3-2//创建ArrayList集合对象并存储狗狗
List<Dog>dogs=newArrayList<Dog>();dogs.add(dog1);……//dogs.add("hello");
//显示第三个元素的信息
Dogdog=dogs.get(2);
//使用foreach遍历dogs对象for(Dogdog:dogs){ ……}标记元素类型类型不符,出现编译错误无需类型强制转换
32/39小结:泛型集合泛型集合3-3
Map<String,Dog>dogMap=newHashMap<String,Dog>();dogMap.put(ououDog.getName(),ououDog);……/*通过迭代器依次输出集合中所有狗狗的信息*/Set<String>
keys=dogMap.keySet();//取出所有key的集合Iterator<String>
it=keys.iterator();//获取Iterator对象while(it.hasNext()){ Stringkey=it.next();
//取出key Dogdog=dogMap.get(key);//根据key取出对应的值……}//使用foreach语句输出集合中所有狗狗的信息for(Stri
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年出版专业职业资格考试冲刺押题试卷中级
- 一级建造师考试(机电工程管理与实务)题库含答案(2025年达州)
- 中国成人社区获得性肺炎诊断和治疗指南2025版泌尿外科患者版
- 《信息技术与人工智能》课程标准
- 护理质量管理的文化内涵
- 护理标准化查房与护理文书书写
- Fmoc-FF-生命科学试剂-MCE
- 康复护理中的康复预防
- 2026oracle索引面试题及答案
- 2026linux数据库 运维工程师面试题及答案
- 2025内蒙古乌海市国创数字产业发展有限责任公司招聘和考察更正笔试历年参考题库附带答案详解
- 2026年安徽省合肥市高三二模英语试题(含答案和音频)
- 2026年传播与策划考试试题及答案答案
- 小学劝返复学工作制度
- 藏医外冶室工作制度
- 2025年铜仁市辅警考试公安基础知识考试真题库及参考答案
- 2025版继发性高血压筛查和诊断中国专家共识
- 广西能汇投资集团有限公司招聘笔试题库2026
- 监理安全管理制度和预案(3篇)
- 紧固件模具维护调试技师岗位招聘考试试卷及答案
- 酒泉市市直机关及参照公务员法管理单位遴选笔试真题2025年附答案
评论
0/150
提交评论