首页 Java集合框架实验报告(2)

Java集合框架实验报告(2)

举报
开通vip

Java集合框架实验报告(2)浙江大学城市学院实验报告课程名称         Java高级程序设计             实验项目名称       Java集合框架实验             学生姓名      专业班级     学号       一、实验目的1.理解Java集合框架的特点、接口与类之间的关系2.掌握Java集合框架的List接口,以及List接口的重要实现类LinkedList、ArrayList3.掌握Java集合框架的Set、SortedSet接口,以及重要实现类HashSet与TreeSet4.掌握Java集合框架...

Java集合框架实验报告(2)
浙江大学城市学院实验 报告 软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载 课程名称         Java高级程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计              实验项目名称       Java集合框架实验             学生姓名      专业班级     学号       一、实验目的1.理解Java集合框架的特点、接口与类之间的关系2.掌握Java集合框架的List接口,以及List接口的重要实现类LinkedList、ArrayList3.掌握Java集合框架的Set、SortedSet接口,以及重要实现类HashSet与TreeSet4.掌握Java集合框架的Map、SortedMap接口及其重要实现类HashMap、TreeMap5.掌握Java集合框架的Collection与Iterator接口的特点与使用方式二、实验 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 1、使用List管理对象集合2、使用Map管理对象集合3、使用Set管理对象集合4、设计一个自定义的集合类三、实验步骤1、在Eclipse中新建工程(即项目)2、使用List管理对象集合1)新建一个包listExample2)在这个包中新建三个类:Student类,StudentList类,StudentListTest类。参考代码:Student.java,StudentList.java,StudentListTest.java3)完善上面三个类,相关 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 参考源代码程序的注释,即根据要求修改源代码程序,给出具体的实现代码(不使用泛型类)。voidaddStudent(Studentstudent){//添加一个学生对象booleana=true;for(inti=0;istudents=newArrayList();voiddeleteStudentById(Stringid){//根据学号删除学生对象Iteratoriterator=students.iterator();while(iterator.hasNext()){Studentst=(Student)iterator.next();if(st.getId()==id)iterator.remove();}}voiddeleteStudentByName(Stringname){//根据姓名删除学生对象Iteratoriterator=students.iterator();while(iterator.hasNext()){Studentst=(Student)iterator.next();if(st.getName()==name)iterator.remove();}}voiddeleteStudentByAge(intage){//根据年龄删除学生对象Iteratoriterator=students.iterator();while(iterator.hasNext()){Studentst=(Student)iterator.next();if(st.getAge()==age)iterator.remove();}}ListfindByName(Stringname){  Liststuds=newArrayList();for(inti=0;ifindByAge(intage){  Liststuds=newArrayList();for(inti=0;ivalues=students.values();Iteratorit=values.iterator();while(it.hasNext()){if(it.next().getName().equals(name))it.remove();}}voiddeleteStudentByAge(intage){//根据学生年龄删除学生对象Collectionvalues=students.values();Iteratorit=values.iterator();while(it.hasNext()){if(it.next().getAge()==age)it.remove();}}Student[]findByName(Stringname){  inta=0;Collectionvalues=students.values();Iteratorit=values.iterator();while(it.hasNext()){if(it.next().getName().equals(name))a;}intb=0;Student[]s=newStudent[a];Collectionvalues1=students.values();Iteratorit1=values1.iterator();while(it1.hasNext()){Studentss=it1.next();if(ss.getName().equals(name)){s[b]=ss;b;}}returns;}Student[]findByAge(intage){  inta=0;Collectionvalues=students.values();Iteratorit=values.iterator();while(it.hasNext()){if(it.next().getAge()==age)a;}intb=0;Student[]s=newStudent[a];Collectionvalues1=students.values();Iteratorit1=values1.iterator();while(it1.hasNext()){Studentss=it1.next();if(ss.getAge()==age){s[b]=ss;b;}}returns;}4)新创建MapExample2包,重新设计设计上述程序(新程序都属于这个包),这时需要使用泛型类,即出现的Map、TreeMap或HashMap都使用泛型。privateMapstudents=newHashMap();voidaddStudent(Studentstudent){//添加一个学生对象students.put(newInteger(student.getId()),student);}StudentfindById(Stringid){returnstudents.get(newInteger(id));}4、使用Set管理对象集合1)新建一个包SetExample2)在这个包中新建三个类:Student类,StudentSet类,StudentSetTest类。参考代码:这三个类的参考代码见Student.java,StudentSet.java,StudentSetTest.java3)完善上面三个类,相关要求参考源代码程序的注释,即根据要求修改源代码程序,给出具体的实现代码(不使用泛型类)。voiddeleteStudentById(Stringid){//根据学号删除学生对象for(inti=0;iit=students.iterator();while(it.hasNext()){if(it.next().getId().equalsIgnoreCase(id))it.remove();}}voiddeleteStudentByName(Stringname){//根据姓名删除学生对象Iteratorit=students.iterator();while(it.hasNext()){if(it.next().getName().equalsIgnoreCase(name))it.remove();}}voiddeleteStudentByAge(intage){//根据年龄删除学生对象Iteratorit=students.iterator();while(it.hasNext()){if(it.next().getAge()==age)it.remove();}publicclassStudentimplementsComparable//实现Comparable接口对于TreeSet排序有用{publicintcompareTo(Objectarg0){Studentstud=(Student)arg0;returnthis.getId().compareTo(stud.getId());}实现是自定义排序功能5、设计一个自定义的集合类四.实验结果与分析1.请说明采用接口变量操作集合对象的方式,并阐述这么做的主要优点。提示:在“使用List管理对象集合”的实验中,LinkedList、ArrayList两个类都可以管理一批对象,但是程序中使用List接口变量引用LinkedList、ArrayList对象,即使用如下方式:privateListstudents=newArrayList();而不是直接使用LinkedList、ArrayList类型变量,比如:privateArrayListstudents=newArrayList();这样做有什么用意,有什么好处?这是一种很好的设计模式.一个接口有多种实现,这种写法是java面向对象的一种思想,依赖倒置原则,即依赖于抽象不依赖于实现(具体)。给调用者提供的应该是接口或者抽象类,而实现者可以实现或者继承接口或者抽象类来满足调用者,这样调用者不必知道实现者怎样操作,实现者也可以根据具体情况去实现,这样去除了耦合。这就是java设计模式的基础思想之一。从Java语法上,这种方式是使用接口引用指向具体实现,这样大大提高了代码使用的灵活性。2.请说明LinkedList、ArrayList有何不同,各自适用于哪些场合?LinkedList:采用链表来管理集合的元素。优点是可以方便地进行元素的增加,删除。即元素个数变化的代价较小,但是查询性能比数组差。ArrayList:使用可变长度的数组来管理集合的元素。优点是查询性能比链表好,缺点是长度不可变化,删除元素代价大。LinkedList适用于元素增加删除频繁的场合。ArrayList适用于查询元素较频繁的场合3.请说明HashSet,TreeSet有何不同,各自适用于哪些场合?1、TreeSet中的数据是自动排好序的,不允许放入null值2、HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束3、HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例4.请说明HashMap、TreeMap有何不同,各自适用于哪些场合?HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。5.Iterator与For循环都可以用于遍历集合中的元素,请问有何不同之处。Iterator:通用,对于所有集合,使用Iterator性能都一样,客户端自身不维护遍历集合的"指针",所有的内部状态(如当前元素位置,是否有下一个元素)都由Iterator来维护,而这个Iterator由集合类通过工厂方法生成,因此,它知道如何遍历整个集合。客户端从不直接和集合类打交道,它总是控制Iterator,向它发送"向前","向后","取当前元素"的命令,就可以间接遍历整个集合。For循环:虽然和Iterator性能差不多,但是在查找链表如LinkedList的时候遍历集合的开销会差别很大!就以LinkedList来说,用get(i)方法来取元素的主要代码,我们可以看到,LinkedList内的get(i)方法,用了循环方式来返回元素,性能肯定会差.6.简单地分析比较不同集合类在选用上的主要原则。List接口可以存储重复的数据。并且可以基于位置(下标)操作集合。当增删改频繁的时候用LinkedList。当查询频繁时用ArrayListMap接口类似数学中的映射。对象的管理是一组键-值得映射关系。主要是适用于数量较多的对象管理。希望通过KEY快速的查到对应的value。HashMap是通过哈希表管理的,允许nullTreeMap该映射按照键自然排序。不允许为空Set接口不允许有重复的元素。HashSet通过哈希算法管理允许nullTreeSet按照元素自然的排序五.讨论、心得(可写遇到的问题及解决方法,或者对技术的理解等)
本文档为【Java集合框架实验报告(2)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_686908
暂无简介~
格式:doc
大小:49KB
软件:Word
页数:30
分类:
上传时间:2022-08-04
浏览量:0