ImageVerifierCode 换一换
格式:DOC , 页数:16 ,大小:203.52KB ,
资源ID:10478052      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10478052.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java集合框架实验报告.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

Java集合框架实验报告.doc

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

2、 Iterator 接口的特点与使用方式 二、实验内容1、 使用 List 管理对象集合2、 使用 Map 管理对象集合3、 使用 Set 管理对象集合4、 设计一个自定义的集合类三、实验步骤1、 在 Eclipse 中新建工程(即项目)2、 使用 List 管理对象集合1) 新建一个包 listExample2) 在这个包中新建三个类:Student 类,StudentList 类,StudentListTest 类。参考代码: Student.java, StudentList.java,StudentListTest.java3) 完善上面三个类,相关要求参考源代码程序的注释,即根据要求

3、修改源代码程序,给出具体的实现代码(不使用泛型类) 。void addStudent(Student student)/添加一个学生对象boolean a=true;for(int i=0;i students = new ArrayList(); void deleteStudentById(String id)/根据学号删除学生对象Iterator iterator = students.iterator(); while(iterator.hasNext()Student st=(Student)iterator.next();if(st.getId()=id) iterator.rem

4、ove();void deleteStudentByName(String name)/根据姓名删除学生对象Iterator iterator = students.iterator(); while(iterator.hasNext()Student st=(Student)iterator.next();if(st.getName()=name) iterator.remove();void deleteStudentByAge(int age)/根据年龄删除学生对象Iterator iterator = students.iterator(); while(iterator.hasNex

5、t()Student st=(Student)iterator.next();if(st.getAge()=age) iterator.remove();List findByName(String name)List studs=new ArrayList();for(int i=0;i findByAge(int age)List studs=new ArrayList();for(int i=0;i values=students.values();Iterator it=values.iterator();while(it.hasNext()if(it.next().getName()

6、.equals(name)it.remove();void deleteStudentByAge(int age)/根据学生年龄删除学生对象Collection values=students.values();Iterator it=values.iterator();while(it.hasNext()if(it.next().getAge()=age)it.remove();Student findByName(String name)int a=0;Collection values=students.values();Iterator it=values.iterator();whi

7、le(it.hasNext()if(it.next().getName().equals(name)a+;int b=0;Student s=new Studenta;Collection values1=students.values();Iterator it1=values1.iterator();while(it1.hasNext()Student ss=it1.next();if(ss.getName().equals(name)sb=ss;b+;return s;Student findByAge(int age)int a=0;Collection values=students

8、.values();Iterator it=values.iterator();while(it.hasNext()if(it.next().getAge()=age)a+;int b=0;Student s=new Studenta;Collection values1=students.values();Iterator it1=values1.iterator();while(it1.hasNext()Student ss=it1.next();if(ss.getAge()=age)sb=ss;b+;return s;4) 新创建 MapExample2 包,重新设计设计上述程序(新程序

9、都属于这个包) ,这时需要使用泛型类,即出现的 Map、TreeMap 或 HashMap 都使用泛型。private Map students = new HashMap();void addStudent(Student student)/添加一个学生对象students.put(new Integer(student.getId(),student);Student findById(String id)return students.get(new Integer(id);4、 使用 Set 管理对象集合1) 新建一个包 SetExample2) 在这个包中新建三个类:Student

10、类,StudentSet 类,StudentSetTest 类。参考代码:这三个类的参考代码见 Student.java, StudentSet.java,StudentSetTest.java3) 完善上面三个类,相关要求参考源代码程序的注释,即根据要求修改源代码程序,给出具体的实现代码(不使用泛型类) 。void deleteStudentById(String id)/根据学号删除学生对象for(int i=0;iit=students.iterator();while(it.hasNext()if(it.next().getId().equalsIgnoreCase(id)it.rem

11、ove();void deleteStudentByName(String name)/根据姓名删除学生对象Iteratorit=students.iterator();while(it.hasNext()if(it.next().getName().equalsIgnoreCase(name)it.remove();void deleteStudentByAge(int age)/根据年龄删除学生对象Iteratorit=students.iterator();while(it.hasNext()if(it.next().getAge()=age)it.remove();public cla

12、ss Student implements Comparable /实现Comparable 接口对于TreeSet排序有用public int compareTo(Object arg0) Student stud = (Student)arg0;return this.getId().compareTo(stud.getId();实现是自定义排序功能5、 设计一个自定义的集合类四. 实验结果与分析1. 请说明采用接口变量操作集合对象的方式,并阐述这么做的主要优点。提示:在“使用 List 管理对象集合”的实验中,LinkedList、ArrayList 两个类都可以管理一批对象,但是程序中

13、使用 List 接口变量引用 LinkedList、ArrayList 对象,即使用如下方式:private List students = new ArrayList();而不是直接使用 LinkedList、 ArrayList 类型变量,比如:private ArrayList students = new ArrayList();这样做有什么用意,有什么好处?这是一种很好的设计模式.一个接口有多种实现,这种写法是 java 面向对象的一种思想,依赖倒置原则,即依赖于抽象不依赖于实现(具体) 。给调用者提供的应该是接口或者抽象类,而实现者可以实现或者继承接口或者抽象类来满足调用者,这样调

14、用者不必知道实现者怎样操作,实现者也可以根据具体情况去实现,这样去除了耦合。这就是 java 设计模式的基础思想之一。从 Java 语法上,这种方式是使用接口引用指向具体实现,这样大大提高了代码使用的灵活性。2.请说明 LinkedList、ArrayList 有何不同,各自适用于哪些场合?LinkedList:采用链表来管理集合的元素。优点是可以方便地进行元素的增加,删除。即元素个数变化的代价较小,但是查询性能比数组差。ArrayList:使用可变长度的数组来管理集合的元素。优点是查询性能比链表好,缺点是长度不可变化,删除元素代价大。LinkedList 适用于元素增加删除频繁的场合。Arr

15、ayList 适用于查询元素较频繁的场合3.请说明 HashSet,TreeSet 有何不同,各自适用于哪些场合?1、TreeSet 中的数据是自动排好序的,不允许放入 null 值2、HashSet 中的数据是无序的,可以放入 null,但只能放入一个 null,两者中的值都不能重复,就如数据库中唯一约束3、HashSet 要求放入的对象必须实现 HashCode()方法,放入的对象,是以 hashcode 码作为标识的,而具有相同内容的 String 对象,hashcode 是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例4. 请说明 HashMap、TreeMap 有

16、何不同,各自适用于哪些场合?HashMap 通过 hashcode 对其内容进行快速查找,而 TreeMap 中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果你就应该使用 TreeMap(HashMap 中元素的排列顺序是不固定的) 。5. Iterator 与 For 循环都可以用于遍历集合中的元素,请问有何不同之处。Iterator:通用,对于所有集合,使用 Iterator 性能都一样 , 客户端自身不维护遍历集合的“指针 “,所有的内部状态(如当前元素位置,是否有下一个元素)都由 Iterator 来维护,而这个 Iterator 由集合类通过工厂方法生成,因此,它知道

17、如何遍历整个集合。客户端从不直接和集合类打交道,它总是控制 Iterator,向它发送 “向前“,“ 向后“,“取当前元素“的命令,就可以间接遍历整个集合。For 循环: 虽然和 Iterator 性能差不多,但是在查找链表如 LinkedList 的时候遍历集合的开销会差别很大! 就以 LinkedList 来说,用 get(i)方法来取元素的主要代码, 我们可以看到,LinkedList 内的 get(i)方法,用了循环方式来返回元素,性能肯定会差.6. 简单地分析比较不同集合类在选用上的主要原则。List 接口 可以存储重复的数据。并且可以基于位置(下标)操作集合。当增删改频繁的时候用 LinkedList。当查询频繁时用 ArrayListMap 接口类似数学中的映射。对象的管理是一组 键 -值得映射关系。主要是适用于数 量较多的对象管理。希望通过 KEY 快速的查到对应的 value。HashMap 是通过哈希表管理的,允许 nullTreeMap 该映射按照键自然排序。不允许为空Set 接口不允许有重复的元素。HashSet 通过哈希算法管理 允许 nullTreeSet 按照元素自然的排序五讨论、心得(可写遇到的问题及解决方法,或者对技术的理解等)

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报