欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    Java集合框架实验报告材料.doc

    • 资源ID:1165867       资源大小:181.05KB        全文页数:16页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java集合框架实验报告材料.doc

    实验报告课程名称 Java高级程序设计 实验项目名称 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,Student3) 完善上面三个类,相关要求参考源代码程序的注释,即根据要求修改源代码程序,给出具体的实现代码不使用泛型类。void addStudent(Student student)/添加一个学生对象booleana=true;for(inti=0;i<students.size();i+)Student stud = (Student)students.get(i);if(stud.getId().equalsIgnoreCase(student.getId()a=false;if(a=true)students.add(student);/修改代码,保证students集合中所有学生对象的id号唯一void deleteStudentById(String id)/根据学号删除学生对象for(inti=0;i<students.size();i+)Student stud = (Student)students.get(i);if(stud.getId().equalsIgnoreCase(id)students.remove(stud); void deleteStudentByName(String name)/根据某某删除学生对象for(inti=0;i<students.size();i+)Student stud = (Student)students.get(i);if(stud.getName().equalsIgnoreCase(name)students.remove(stud); void deleteStudentByAge(intage)/根据年龄删除学生对象for(inti=0;i<students.size();i+)Student stud = (Student)students.get(i);if(stud.getAge()=age)students.remove(stud);Student findByName(String name)inta=0;for(inti=0;i<students.size();i+)Student stud = (Student)students.get(i);if(stud.getName().equalsIgnoreCase(name)a+;Student st=new Studenta;intb=0;for(inti=0;i<students.size();i+)Student stud = (Student)students.get(i);if(stud.getName().equalsIgnoreCase(name)stb=stud;b+; returnst;Student findByAge(intage)inta=0;for(inti=0;i<students.size();i+)Student stud = (Student)students.get(i);if(stud.getAge()=age)a+;Student st=new Studenta;intb=0;for(inti=0;i<students.size();i+)Student stud = (Student)students.get(i);if(stud.getAge()=age)stb=stud;b+;returnst;4) 新创建listExample2包,重新设计设计上述程序新程序都属于这个包,这时需要使用泛型类,即出现的List、ArrayList或LinkedList都使用泛型。private List<Student> students = new ArrayList<Student>();void deleteStudentById(String id)/根据学号删除学生对象 Iterator<Student> iterator = students.iterator(); while(iterator.hasNext() Student st=(Student)iterator.next();if(st.getId()=id) iterator.remove(); void deleteStudentByName(String name)/根据某某删除学生对象 Iterator<Student> iterator = students.iterator(); while(iterator.hasNext() Student st=(Student)iterator.next();if(st.getName()=name) iterator.remove(); void deleteStudentByAge(intage)/根据年龄删除学生对象 Iterator<Student> iterator = students.iterator(); while(iterator.hasNext() Student st=(Student)iterator.next();if(st.getAge()=age) iterator.remove(); List<Student> findByName(String name) List<Student> studs=new ArrayList<Student>();for(inti=0;i<students.size();i+)Student stud = (Student)students.get(i);if(stud.getName().equals(name)studs.add(stud);returnstuds;List<Student> findByAge(intage)List<Student> studs=new ArrayList<Student>();for(inti=0;i<students.size();i+)Student stud = (Student)students.get(i);if(stud.getAge()=age)studs.add(stud);returnstuds;3、 使用Map管理对象集合1) 新建一个包MapExample2) 在这个包中新建三个类:Student类,StudentMap类,StudentMapTest类。参考代码Student.java, StudentMap.java,Student3) 完善上面三个类,相关要求参考源代码程序的注释,即根据要求修改源代码程序,给出具体的实现代码不使用泛型类。void deleteStudentByName(String name)/根据学生某某删除学生对象 Collection<Student> values=students.values(); Iterator<Student> it=values.iterator();while(it.hasNext()if(it.next().getName().equals(name)it.remove(); void deleteStudentByAge(intage)/根据学生年龄删除学生对象 Collection<Student> values=students.values(); Iterator<Student> it=values.iterator();while(it.hasNext()if(it.next().getAge()=age)it.remove(); Student findByName(String name)inta=0;Collection<Student> values=students.values(); Iterator<Student> it=values.iterator();while(it.hasNext()if(it.next().getName().equals(name)a+; intb=0; Student s=new Studenta; Collection<Student> values1=students.values(); Iterator<Student> it1=values1.iterator();while(it1.hasNext() Student ss=it1.next();if(ss.getName().equals(name) sb=ss;b+; returns;Student findByAge(intage)inta=0;Collection<Student> values=students.values(); Iterator<Student> it=values.iterator();while(it.hasNext()if(it.next().getAge()=age)a+; intb=0; Student s=new Studenta; Collection<Student> values1=students.values(); Iterator<Student> it1=values1.iterator();while(it1.hasNext() Student ss=it1.next();if(ss.getAge()=age) sb=ss;b+; returns;4) 新创建MapExample2包,重新设计设计上述程序新程序都属于这个包,这时需要使用泛型类,即出现的Map、TreeMap或HashMap都使用泛型。private Map<Integer,Student> students = new HashMap<Integer,Student>();void addStudent(Student student)/添加一个学生对象students.put(new Integer(student.getId(),student);Student findById(String id)returnstudents.get(new Integer(id);4、 使用Set管理对象集合1) 新建一个包SetExample2) 在这个包中新建三个类:Student类,StudentSet类,StudentSetTest类。参考代码:这三个类的参考代码见Student.java, StudentSet.java,Student3) 完善上面三个类,相关要求参考源代码程序的注释,即根据要求修改源代码程序,给出具体的实现代码不使用泛型类。void deleteStudentById(String id)/根据学号删除学生对象for(inti=0;i<students.size();i+)Student stud = (Student)students.toArray()i;if(stud.getId().equalsIgnoreCase(id)students.remove(stud); void deleteStudentByName(String name)/根据某某删除学生对象for(inti=0;i<students.size();i+)Student stud = (Student)students.toArray()i;if(stud.getName().equalsIgnoreCase(name)students.remove(stud); void deleteStudentByAge(intage)/根据年龄删除学生对象for(inti=0;i<students.size();i+)Student stud = (Student)students.toArray()i;if(stud.getAge()=age)students.remove(stud); Student findByName(String name)inta=0;for(inti=0;i<students.size();i+)Student stud = (Student)students.toArray()i;if(stud.getName().equalsIgnoreCase(name)a+;Student st=new Studenta;intb=0;for(inti=0;i<students.size();i+)Student stud = (Student)students.toArray()i;if(stud.getName().equalsIgnoreCase(name)stb=stud;b+;returnst;Student findByAge(intage)inta=0;for(inti=0;i<students.size();i+)Student stud = (Student)students.toArray()i;if(stud.getAge()=age)a+;Student st=new Studenta;intb=0;for(inti=0;i<students.size();i+)Student stud = (Student)students.toArray()i;if(stud.getAge()=age)stb=stud;b+;returnst;4) 新创建SetExample2包,重新设计设计上述程序新程序都属于这个包,这时需要使用泛型类,即出现的Set、TreeSet或HashSet都使用泛型。 注意:Student类实现parable接口的作用。void deleteStudentById(String id)/根据学号删除学生对象 Iterator<Student>it=students.iterator();while(it.hasNext()if(it.next().getId().equalsIgnoreCase(id)it.remove(); void deleteStudentByName(String name)/根据某某删除学生对象 Iterator<Student>it=students.iterator();while(it.hasNext()if(it.next().getName().equalsIgnoreCase(name)it.remove(); void deleteStudentByAge(intage)/根据年龄删除学生对象 Iterator<Student>it=students.iterator();while(it.hasNext()if(it.next().getAge()=age)it.remove(); publicclassStudentimplementsparable/实现parable接口对于TreeSet排序有用publicint pareTo(Object arg0) Student stud = (Student)arg0;returnthis.getId() pareTo(stud.getId();实现是自定义排序功能5、 设计一个自定义的集合类四. 实验结果与分析1. 请说明采用接口变量操作集合对象的方式,并阐述这么做的主要优点。提示:在“使用List管理对象集合的实验中,LinkedList、ArrayList两个类都可以管理一批对象,但是程序中使用List接口变量引用LinkedList、ArrayList对象,即使用如下方式:private List students = new ArrayList();而不是直接使用LinkedList、ArrayList类型变量,比如:private ArrayListstudents = new ArrayList();这样做有什么用意,有什么好处?这是一种很好的设计模式.一个接口有多种实现,这种写法是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中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用TreeMapHashMap中元素的排列顺序是不固定的。5. Iterator与For循环都可以用于遍历集合中的元素,请问有何不同之处。Iterator:通用,对于所有集合,使用Iterator性能都一样, 客户端自身不维护遍历集合的"指针",所有的内部状态如当前元素位置,是否有下一个元素都由Iterator来维护,而这个Iterator由集合类通过工厂方法生成,因此,它知道如何遍历整个集合。客户端从不直接和集合类打交道,它总是控制Iterator,向它发送"向前","向后","取当前元素"的命令,就可以间接遍历整个集合。For循环:虽然和Iterator性能差不多,但是在查找链表如LinkedList的时候遍历集合的开销会差异很大! 就以LinkedList来说,用get(i)方法来取元素的主要代码, 我们可以看到,LinkedList 内的get(i)方法,用了循环方式来返回元素,性能肯定会差.6. 简单地分析比拟不同集合类在选用上的主要原如此。 List接口 可以存储重复的数据。并且可以基于位置下标操作集合。 当增删改频繁的时候用LinkedList。当查询频繁时用ArrayList Map接口类似数学中的映射。对象的管理是一组 键-值得映射关系。主要是适用于数 量较多的对象管理。希望通过KEY快速的查到对应的value。 HashMap是通过哈希表管理的,允许null TreeMap该映射按照键自然排序。不允许为空 Set接口不允许有重复的元素。 HashSet通过哈希算法管理 允许null TreeSet按照元素自然的排序五讨论、心得可写遇到的问题与解决方法,或者对技术的理解等

    注意事项

    本文(Java集合框架实验报告材料.doc)为本站会员(李司机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开