版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章用集合存储对象回顾什么是异常?Java中,如何进行异常处理?请说明throw与throws的区别与联系?预习检查List、Map是否都继承自Collection接口?请说明集合类ArrayList与HashMap的区别?本章任务开发一套小型的新闻管理系统,完成如下功能:使用集合类存储新闻标题可以对新闻标题进行增、删、改、查使用英文名称关联不同的Accp学员,并实现对学员的增、删、改、查操作掌握Java集合框架的常用接口掌握常用集合类:ArrayList、LinkedList、HashMap本章目标为什么需要集合框架学员1学员20如何存储每天的新闻信息?如何存储ACCP课程的代码与课程信息,能够通过代码方便地获得课程信息?如果写程序时并不知道程序运行时会需要多少对象,或者,需要更复杂的方式存储对象——那么,可以使用Java集合框架,来解决这类问题一维数组代码1……代码N课程1……课程N一一对应新闻1……新闻N每天的新闻总数不确定,显然无法再使用数组保存存储一个班的学员信息,假定一个班容纳20名学员Java集合框架包含的内容1接口CollectionListMap2具体类ListArrayListLinkedListMapHashMap3算法Java集合框架,为我们提供了一套性能优良、使用方便的接口和类,我们不必再重新发明轮子,只需学会如何使用它们,就可以处理实际应用中出现的问题了Java集合框架位于java.util包中Collections提供了对集合进行排序、遍历等多种算法实现采用键-值对的存储方式,长度可动态改变采用线性列表的存储方式,长度可动态改变List接口和ArrayList类5-1开发一套小型的新闻管理系统,要求如下:可以存储各类新闻标题(包含ID、名称、创建者、创建时间)可以获取新闻标题的总数可以逐条打印每条新闻标题的名称存储方式如何选择?元素个数不确定使用集合类需要遍历元素存储对象如何确定?类型:新闻标题属性:ID、名称、创建者、创建时间List接口和ArrayList类5-2第一步,确定存储方式1、ArrayList类是List接口的一个具体实现类2、ArrayList对象实现了可变大小的数组3、随机访问和遍历元素时,它提供更好的性能元素1元素2元素3元素4元素5元素6元素7元素8元素9元素10当元素个数增加为11个0129345786元素1元素2元素3元素4元素5元素6元素7元素8元素9元素10元素11创建了一个新的数组,把原数组中元素复制进来012934578610根据下标位置访问元素List接口和ArrayList类5-3第二步:确定存储对象1、创建类型:新闻标题2、包含属性:ID、名称、创建者、创建时间publicclassFirstLevelTitle{privateintid;//IDprivateStringtitleName;//名称privateStringcreater;//创建者privateDatecreateTime;//创建时间publicFirstLevelTitle(intid,StringtitleName,Stringcreater,DatecreateTime){this.id=id;this.titleName=titleName;this.creater=creater;this.createTime=createTime;}publicStringgetTitleName(){ returntitleName;}publicvoidsetTitleName(StringtitleName){ this.titleName=titleName;}}List接口和ArrayList类5-4第三步:具体实现1、按照顺序依次添加各类新闻标题2、获取新闻标题的总数3、根据位置获取相应新闻标题4、逐条打印每条新闻标题的名称publicclassFirstLevelTitleDB1{publicstaticvoidmain(String[]args){FirstLevelTitlecar=newFirstLevelTitle(1,"汽车","管理员",newDate());FirstLevelTitletest=newFirstLevelTitle(2,"高考","管理员",newDate());ListnewsTitleList=newArrayList();newsTitleList.add(car);newsTitleList.add(test); System.out.println("新闻标题数目为:"+newsTitleList.size()+"条");print(newsTitleList);}publicstaticvoidprint(ListnewsList){for(inti=0;i<newsList.size();i++){FirstLevelTitletitle=(FirstLevelTitle)newsList.get(i);System.out.println(i+1+":"+title.getTitleName());}}}123顺序添加,位置从0开始新闻标题数目为:2条1:汽车2:高考控制台输出4从集合中取出后为Object类型,需要进行强制类型转换List接口和ArrayList类5-5第三步:具体实现1、在指定的位置添加新闻标题2、判断是否已经存储了某条新闻标题3、删除指定位置处的某一新闻标题publicclassFirstLevelTitleDB2{publicstaticvoidmain(String[]args){FirstLevelTitlecar=newFirstLevelTitle(1,"汽车","网站管理员",newDate());FirstLevelTitletest=newFirstLevelTitle(2,"高考","网站管理员",newDate());FirstLevelTitlehouse=newFirstLevelTitle(3,"房产","网站管理员",newDate());ListnewsTitleList=newArrayList();newsTitleList.add(car);newsTitleList.add(test);newsTitleList.add(2,house);if(newsTitleList.contains(test)){ System.out.println("有高考的新闻");}else{ System.out.println("没有高考的新闻");}newsTitleList.remove(1);System.out.println("新闻标题数目为:"+newsTitleList.size()+"条");}}123在指定的位置添加元素有高考的新闻新闻标题数目为:2条控制台输出小结1创建一个类Cat包含属性name,在构造方法中进行初始化添加一个方法show(),用以打印name属性的值创建一个类CatTest,添加main方法,实现创建一个ArrayList,向其中添加几个Cat对象遍历该集合,并且对每个Cat对象调用show()方法完整代码实现List接口和LinkedList类3-1升级这套小型的新闻管理系统,要求如下:可以添加头条新闻标题可以删除末条新闻标题存储方式如何选择?元素个数不确定使用集合类需要在列表的头或尾添加、删除元素List接口和LinkedList类3-2第一步,确定存储方式1、LinkedList类是List接口的一个具体实现类2、LinkedList类用于创建链表数据结构3、插入或者删除元素时,它提供更好的性能List接口和LinkedList类3-3第二步:具体实现1、添加头条、以及最末条新闻标题2、获取头条、以及最末条新闻标题3、删除头条、以及最末条新闻标题publicclassFirstLevelTitleDB3{publicstaticvoidmain(String[]args){FirstLevelTitlecar=newFirstLevelTitle(1,"汽车","管理员",newDate());FirstLevelTitlemedical=newFirstLevelTitle(2,"医学","管理员",newDate());LinkedListnewsTitleList=newLinkedList();newsTitleList.addFirst(car);newsTitleList.addLast(medical);FirstLevelTitlefirst=(FirstLevelTitle)newsTitleList.getFirst();System.out.println("头条的新闻标题为:"+first.getTitleName());FirstLevelTitlelast=(FirstLevelTitle)newsTitleList.getLast();System.out.println("排在最后的新闻标题为:"+last.getTitleName());newsTitleList.removeFirst();newsTitleList.removeLast();}}123小结2创建一个类Stack,代表堆栈(其特点为:后进先出),添加方法add(Objectobj)、以及get(),添加main方法进行验证,要求:使用LinkedList实现堆栈在向LinkedList中添加时,使用addLast方法在从LinkedList中取出时,使用removeLast方法完整代码实现Map接口和HashMap类4-1Accp学员应聘至外企工作,每个学员都会有一个英文名称,对应该学员对象Jack西苑中心毕业的李明Rose西苑中心毕业的刘丽现在希望通过英文名称,获得该学员对象的详细信息,如何实现?存储方式如何选择?元素个数不确定使用集合类通过key(英文名称)获得value(学员对象)存储对象如何确定?类型:Accp学员属性:中心名称、姓名Map接口和HashMap类4-2第一步,确定存储方式1、Map接口用于维护“键-值对”的关联性,可以通过键查找值2、HashMap是Map接口的一个具体实现类Map接口和HashMap类4-3第二步:确定存储对象1、创建类型:Accp学员2、包含属性:中心名称、姓名publicclassAccpStudent{privateStringname;//学员姓名privateStringschool;//中心名称publicAccpStudent(Stringname,Stringschool){=name;this.school=school;}publicStringtoString(){ returnschool+"毕业的"+name;}}重写Object的toString()方法,用于输出调试和描述信息Map接口和HashMap类4-4第三步:具体实现1、把英文名称与学员对象按照“键-值对”的方式存储在HashMap中2、分别打印键集、值集、以及键-值对集合3、判断是否存在某个键,如果是,则根据键获取相应的值4、根据键、删除某条记录publicclassMapTest{publicstaticvoidmain(String[]args){AccpStudentstudent1=newAccpStudent("李明","北京中心");AccpStudentstudent2=newAccpStudent("刘丽","天津中心");Mapstudents=newHashMap();students.put("Jack",student1);students.put("Rose",student2);System.out.println("键集:"+students.keySet());System.out.println("值集:"+students.values());System.out.println("键-值对集合:"+students);Stringkey="Jack";if(students.containsKey(key))System.out.println(students.get(key));students.remove(key);System.out.println("键-值对集合:"+students);}}123键集:[Jack,Rose]值集:[北京中心毕业的李明,天津中心毕业的刘丽]键-值对集合:{Jack=北京中心毕业的李明,Rose=天津中心毕业的刘丽}北京中心毕业的李明键-值对集合:{Rose=天津中心毕业的刘丽}控制台输出4小结3创建一个类Book包含属性:title(标题),使用构造方法进行初始化重写toString()方法,用以返回Title属性的值创建一个类BookTest,添加main方法,要求:使用HashMap进行存储,键为Book对象的编号,值为Book对象通过某一个编号获取Book对象,并打印该Book对象的标题完整代码实现使用集合框架注意事项ObjectObjectObject加入集合从集合中取出(Rabbit)object(Car)object(Student)objectRabbitCarStudentRabbitCarStudent
任何对象加入集合类后,自动转变为Object类型;取出时,需要进行强制类型转换,恢复为特定的类型总结2-1请给出下面Java代码的运行结果importJava.util.*;publicclassTestMap{publicstaticvoidmain(String[]args){AccpStudentstudent1=newAccpStudent("李明","西苑中心");AccpStudentstudent2=newAccpStudent("刘丽","西苑中心");AccpStudentstudent3=newAccpStudent("张娜","马甸中心");AccpStudentstudent4=student1;Mapstudents=newHashMap();students.put("Jack",student1);students.put("Rose",student2);students.put("Mary",student3);students.put("Rose",student4);System.out.println(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年长沙道路客运从业资格证考试
- 人教部编版二年级语文上册第23课《纸船和风筝》精美课件
- 吉首大学《大气污染控制工程》2021-2022学年期末试卷
- 吉林艺术学院《色彩Ⅰ》2021-2022学年第一学期期末试卷
- 2024年共同机位拆除同意协议书模板
- 吉林艺术学院《表现素描》2021-2022学年第一学期期末试卷
- 吉林师范大学《运动解剖学》2021-2022学年第一学期期末试卷
- 沙场招租合作协议书范文范本
- 2024年大楼亮化服务合同范本
- 【初中数学】实际问题与一元一次方程-课件 2024-2025学年人教版数学七年级上册
- 2024年山东省淄博市中考道德与法治试卷真题
- 部编版(2024秋)语文一年级上册 6 .影子课件
- GB/T 44723-2024氢燃料内燃机通用技术条件
- 病例讨论英文
- 2022年11月软考(高级)网络规划设计师上午真题
- 2024年中远海运物流限公司直属单位招聘高频难、易错点500题模拟试题附带答案详解
- 第1课 课题二《中外节日·中秋节和感恩节的比较》(教案)-2024-2025学年六年级上册综合实践活动浙教版
- 2024年共青团团课考试测试题库及答案
- 能源岗位招聘面试题与参考回答2024年
- 团队协作课件教学课件
- 24秋国家开放大学《0-3岁婴幼儿的保育与教育》期末大作业参考答案
评论
0/150
提交评论