版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
§7-3使用Map集合存储学生信息Java面向对象程序设计教学目标任务分析
在任务7.1、7.2中,分别将多个学生对象保存到List或Set集合中,如果要在List/Set集合中根据学号查找某个学生的年龄,该怎么办?最简单的方法是遍历集合并判断学号是否相等,然后获取其年龄。当学生人数很多时这种操作的效率会非常低。这时可以采用Map这种键值(key-value)映射表的数据结构,以高效地通过key(学号)快速查找value(年龄)。教学内容1Map集合HashMap集合2泛型3Map集合CollectionListSetArrayListVectorHashSetLinkedListMapHashMap<Key,Value>键值对List集合:添加的元素有序、可重复、有索引Set系列集合:添加的元素无序、不重复、无索引Map集合:代表的是存储key-value(键-值)对的集合,可根据元素的key来访问value。TreeSetMap集合Map:存储key-value(键-值)对的集合,可根据元素的key来访问valuenameXiaoMing“键”不可以重复“值”可以重复age17addreJinan键Key值ValueHashMap集合Map集合的主要实现类是HashMap类,HashMap类常用方法如下表功能方法名说明创建对象publicHashMap()用于创建一个新的空HashMap增加元素publicvoidput(Kkey,Vvalue)将键/值对添加到hashMap中publicvoidputAll(Mapm)将所有键/值对添加到hashMap中publicputIfAbsent(Kkey,Vvalue)先判断指定的键(key)是否存在,不存在则将键/值对插入到HashMap中访问元素publicget(Objectkey)获取指定key对应对valuePublicgetOrDefault(Objectkey,VdefaultValue)获取指定key对应对value,如果找不到key,则返回设置的默认值publickeySet()返回映射中所有key组成的Set视图publicvalues()返回映射中所有value组成的Set视图删除元素publicvoidclear()删除指定hashMap中所有键/值对publicvoidremove(Objectkey,Objectvalue)删除hashMap中指定键key的映射关系获取元素个数publicintsize()计算hashMap中键/值对的数量HashMap集合HashMap使用案例
publicstaticvoidmain(String[]args){
//创建HashMap对象bookMapHashMapbookMap=newHashMap();//添加键值对System.out.println("===添加元素==");bookMap.put(1,"《史记》");bookMap.put(2,"《三国演义》");bookMap.put(3,"《本草纲目》");bookMap.put(4,"《平凡的世界》");//注意:以上作为键的数字1-4,系统自动默认为Integer对象System.out.println(bookMap);System.out.println("===输出key和value====");//输出key和valuefor(Objecti:bookMap.keySet()){System.out.println("key:"+(Integer)i+"value:"+(String)bookMap.get(i));}
HashMap集合//返回所有value值for(Objectvalue:bookMap.values()){//输出每一个valueSystem.out.print((String)value+",");}System.out.println("\n==========统计元素数量=================");//统计元素数量System.out.println(bookMap.size());System.out.println("============访问元素====================");//访问元素System.out.println(bookMap.get(3));System.out.println("============删除元素====================");//删除元素bookMap.remove(4);System.out.println(bookMap);System.out.println("========删除所有键值对===================");//删除所有键值对bookMap.clear();System.out.println(bookMap); }}泛型
在前面集合的学习中,我们已经了解到,集合中可以存储任何类型的对象,但当把一个对象从集合中取出时,系统默认将这个对象认定为Object类型,所以在取出元素时要进行强制类型转换,否则就出现错误。泛型publicstaticvoidmain(String[]args){ //创建电影集合对象 ListmovieList=newArrayList(); movieList.add("《我和我的祖国》"); movieList.add("《建军大业》"); movieList.add("《建党伟业》"); movieList.add("《长津湖》"); //调用size()方法取得集合的大小 System.out.println("集合中存储电影的数量:"+movieList.size());未使用泛型泛型//ArrayList遍历方法一:循环调用get()方法System.out.println("使用普通循环结构遍历:");for(inti=0;i<movieList.size();i++){ StringmovieName=(String)movieList.get(i); System.out.println(movieName); }
//ArrayList遍历方法二:for-each方法System.out.println("使用foreach遍历:");for(Objectobj:movieList){ StringmovieName=(String)obj; System.out.println(movieName); }
泛型publicstaticvoidmain(String[]args){ //创建电影集合对象 List<String>movieList=newArrayList<>(); movieList.add("《我和我的祖国》"); movieList.add("《建军大业》"); movieList.add("《建党伟业》"); movieList.add("《长津湖》"); //调用size()方法取得集合的大小 System.out.println("集合中存储电影的数量:"+movieList.size());使用泛型(参数化类型),指定集合中只能存储字符串类型元素//ArrayList遍历方法一:循环调用get()方法System.out.println("使用普通循环结构遍历:");for(inti=0;i<movieList.size();i++){ StringmovieName=(String)movieList.get(i); System.out.println(movieName); }
//ArrayList遍历方法二:for-each方法System.out.println("使用foreach遍历:");for(Objectobj:movieList){ StringmovieName=(String)obj; System.out.println(movieName); }
泛型泛型的优点统一数据类型把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常,因为在编译阶段
类型就能确定下来。泛型泛型可以限定操作的数据类型,在定义集合类时,可以使用<参数化类型>的方式指定该集合中存储的数据类型,如:Set<Student>set=newHashSet<Student>();则set集合中所有均为Student类型,当从集合中取出元素时则自动认定为Student类型,无需再进行强制类型转换。同样也可以用于Map集合。如:Map<Integer,String>stuMap=newHashMap<Integer,String>();则创建一个
HashMap对象stuMap,
整型(Integer)的key和字符串(String)类型的value。Iterator<String>movieIterator=movieList.iterator();则定义了指向String类型元素的迭代器对象。以上仅仅是用于集合元素类型定义中的泛型,Java中还有泛型类、泛型方法、泛型接口等,在此不再赘述。任务实施同学们自己动手完成本节任务:使用HashMap存储学生对象,并根据学号进行查询的实现步骤如下。1)将学生对象保存到Map集合中,Map元素类型为<Integer,Student>键-值对,键
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年消防条令纲要知识考试题库完整参考答案
- 2026年一级造价师考试题库300道附参考答案(能力提升)
- 2026年一级建造师之一建民航机场工程实务考试题库300道及答案【全优】
- 2026年一级建造师之一建民航机场工程实务考试题库300道及完整答案一套
- 2026年投资项目管理师之投资建设项目决策考试题库200道标准卷
- 2026年质量员之土建质量专业管理实务考试题库200道及答案(真题汇编)
- 2026年高校教师资格证之高等教育学考试题库含答案(精练)
- 2026年中级经济师之中级工商管理考试题库500道带答案(培优b卷)
- 2026年消防设施操作员之消防设备初级技能考试题库150道【考试直接用】
- 2026年一级建造师之一建民航机场工程实务考试题库300道及一套参考答案
- 地铁车站设施与服务优化策略
- 文化创业街区创意
- 年会合同协议书模板
- 中西医结合治疗类风湿关节炎疼痛
- 2025国际胰腺病学会急性胰腺炎修订指南解读课件
- 雨课堂学堂云在线《中国马克思主义与当代(北京化工大学 )》单元测试考核答案
- 贵州省贵阳市2025-2026学年高三上学期11月质量监测化学试卷(含答案)
- 机场设备维修与保养操作手册
- 动脉穿刺法教案(2025-2026学年)
- 2025年党的二十届四中全会精神宣讲稿及公报解读辅导报告
- 工程勘察设计收费标准
评论
0/150
提交评论