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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

Java集合框架实验报告.docx

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

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

3、 addStudent(Student student)/添加一个学生对象 boolean a=true; for(int i=0;istudents、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(

4、int i=0;istudents、size();i+) Student stud = (Student)students、get(i); if(stud、getId()、equalsIgnoreCase(id) students、remove(stud); void deleteStudentByName(String name)/根据姓名删除学生对象 for(int i=0;istudents、size();i+) Student stud = (Student)students、get(i); if(stud、getName()、equalsIgnoreCase(name) studen

5、ts、remove(stud); void deleteStudentByAge(int age)/根据年龄删除学生对象 for(int i=0;istudents、size();i+) Student stud = (Student)students、get(i); if(stud、getAge()=age) students、remove(stud); Student findByName(String name) int a=0; for(int i=0;istudents、size();i+) Student stud = (Student)students、get(i); if(st

6、ud、getName()、equalsIgnoreCase(name) a+; Student st=new Studenta; int b=0; for(int i=0;istudents、size();i+) Student stud = (Student)students、get(i); if(stud、getName()、equalsIgnoreCase(name) stb=stud; b+; return st; Student findByAge(int age) int a=0; for(int i=0;istudents、size();i+) Student stud = (S

7、tudent)students、get(i); if(stud、getAge()=age) a+; Student st=new Studenta; int b=0; for(int i=0;istudents、size();i+) Student stud = (Student)students、get(i); if(stud、getAge()=age) stb=stud;b+; return st; 4) 新创建listExample2包,重新设计设计上述程序(新程序都属于这个包),这时需要使用泛型类,即出现的List、ArrayList或LinkedList都使用泛型。private L

8、ist students = new ArrayList(); void deleteStudentById(String id)/根据学号删除学生对象 Iterator iterator = students、iterator(); while(iterator、hasNext() Student st=(Student)iterator、next(); if(st、getId()=id) iterator、remove(); void deleteStudentByName(String name)/根据姓名删除学生对象 Iterator iterator = students、itera

9、tor(); while(iterator、hasNext() Student st=(Student)iterator、next(); if(st、getName()=name) iterator、remove(); void deleteStudentByAge(int age)/根据年龄删除学生对象 Iterator iterator = students、iterator(); while(iterator、hasNext() Student st=(Student)iterator、next(); if(st、getAge()=age) iterator、remove(); List

10、 findByName(String name) List studs=new ArrayList(); for(int i=0;istudents、size();i+) Student stud = (Student)students、get(i); if(stud、getName()、equals(name) studs、add(stud); return studs; List findByAge(int age) List studs=new ArrayList(); for(int i=0;istudents、size();i+) Student stud = (Student)st

11、udents、get(i); if(stud、getAge()=age) studs、add(stud); return studs; 3、 使用Map管理对象集合1) 新建一个包MapExample2) 在这个包中新建三个类:Student类,StudentMap类,StudentMapTest类。参考代码Student、java, StudentMap、java,StudentMapTest、java3) 完善上面三个类,相关要求参考源代码程序的注释,即根据要求修改源代码程序,给出具体的实现代码(不使用泛型类)。 void deleteStudentByName(String name)/

12、根据学生姓名删除学生对象 Collection values=students、values(); Iterator it=values、iterator(); while(it、hasNext() if(it、next()、getName()、equals(name) it、remove(); void deleteStudentByAge(int age)/根据学生年龄删除学生对象 Collection values=students、values(); Iterator it=values、iterator(); while(it、hasNext() if(it、next()、getAg

13、e()=age) it、remove(); Student findByName(String name) int a=0; Collection values=students、values(); Iterator it=values、iterator(); while(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(

14、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、values(); Iterator it=values、iterator(); while(it、hasNext() if(it、next()、getAge()=age) a+; int b=0; Student s=new Studenta; Collection values1=student

15、s、values(); Iterator it1=values1、iterator(); while(it1、hasNext() Student ss=it1、next(); if(ss、getAge()=age) sb=ss; b+; return s; 4) 新创建MapExample2包,重新设计设计上述程序(新程序都属于这个包),这时需要使用泛型类,即出现的Map、TreeMap或HashMap都使用泛型。private Map students = new HashMap(); void addStudent(Student student)/添加一个学生对象 students、pu

16、t(new Integer(student、getId(),student); Student findById(String id) return students、get(new Integer(id); 4、 使用Set管理对象集合1) 新建一个包SetExample2) 在这个包中新建三个类:Student类,StudentSet类,StudentSetTest类。参考代码:这三个类的参考代码见Student、java, StudentSet、java,StudentSetTest、java3) 完善上面三个类,相关要求参考源代码程序的注释,即根据要求修改源代码程序,给出具体的实现代码

17、(不使用泛型类)。 void deleteStudentById(String id)/根据学号删除学生对象 for(int i=0;istudents、size();i+) Student stud = (Student)students、toArray()i; if(stud、getId()、equalsIgnoreCase(id) students、remove(stud); void deleteStudentByName(String name)/根据姓名删除学生对象 for(int i=0;istudents、size();i+) Student stud = (Student)s

18、tudents、toArray()i; if(stud、getName()、equalsIgnoreCase(name) students、remove(stud); void deleteStudentByAge(int age)/根据年龄删除学生对象 for(int i=0;istudents、size();i+) Student stud = (Student)students、toArray()i; if(stud、getAge()=age) students、remove(stud); Student findByName(String name) int a=0; for(int

19、i=0;istudents、size();i+) Student stud = (Student)students、toArray()i; if(stud、getName()、equalsIgnoreCase(name) a+; Student st=new Studenta; int b=0; for(int i=0;istudents、size();i+) Student stud = (Student)students、toArray()i; if(stud、getName()、equalsIgnoreCase(name) stb=stud; b+; return st; Student

20、 findByAge(int age) int a=0; for(int i=0;istudents、size();i+) Student stud = (Student)students、toArray()i; if(stud、getAge()=age) a+; Student st=new Studenta; int b=0; for(int i=0;istudents、size();i+) Student stud = (Student)students、toArray()i; if(stud、getAge()=age) stb=stud; b+; return st; 4) 新创建Se

21、tExample2包,重新设计设计上述程序(新程序都属于这个包),这时需要使用泛型类,即出现的Set、TreeSet或HashSet都使用泛型。 注意:Student类实现Comparable接口的作用。 void deleteStudentById(String id)/根据学号删除学生对象 Iteratorit=students、iterator(); while(it、hasNext() if(it、next()、getId()、equalsIgnoreCase(id) it、remove(); void deleteStudentByName(String name)/根据姓名删除学生

22、对象 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 class Student implements Comparable /实现Compar

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

24、式:private List students = new ArrayList();而不就是直接使用LinkedList、ArrayList类型变量,比如:private ArrayList students = new ArrayList();这样做有什么用意,有什么好处? 这就是一种很好的设计模式、一个接口有多种实现,这种写法就是java面向对象的一种思想,依赖倒置原则,即依赖于抽象不依赖于实现(具体)。 给调用者提供的应该就是接口或者抽象类,而实现者可以实现或者继承接口或者抽象类来满足调用者,这样调用者不必知道实现者怎样操作,实现者也可以根据具体情况去实现,这样去除了耦合。这就就是jav

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

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

27、保持着某种固定的顺序,如果您需要得到一个有序的结果您就应该使用TreeMap(HashMap中元素的排列顺序就是不固定的)。5、 Iterator与For循环都可以用于遍历集合中的元素,请问有何不同之处。 Iterator:通用,对于所有集合,使用Iterator性能都一样, 客户端自身不维护遍历集合的指针,所有的内部状态(如当前元素位置,就是否有下一个元素)都由Iterator来维护,而这个Iterator由集合类通过工厂方法生成,因此,它知道如何遍历整个集合。客户端从不直接与集合类打交道,它总就是控制Iterator,向它发送向前,向后,取当前元素的命令,就可以间接遍历整个集合。 For循环:虽然与Iterator性能差不多,但就是在查找链表如LinkedList的时候遍历集合的开销会差别很大! 就以LinkedList来说,用get(i)方法来取元素的主要代码, 我们可以瞧到,LinkedList 内的get(i)方法,用了循环方式来返回元素,性能肯定会差、6. 简单地分析比较不同集合类在选用上的主要原则。 List接口 可以存储重复的数据。并且可以基于位置(下标)操作集合。 当增删改频繁的时候用LinkedList。当查询频繁时用ArrayList Map接口类似数学中的映射。对象的管理就是一组 键-值得映射关系。主要就是适用于数 量较多的对象管理。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1