2022年Java集合框架实验报告.pdf

上传人:Che****ry 文档编号:12849367 上传时间:2022-04-26 格式:PDF 页数:14 大小:483.15KB
返回 下载 相关 举报
2022年Java集合框架实验报告.pdf_第1页
第1页 / 共14页
2022年Java集合框架实验报告.pdf_第2页
第2页 / 共14页
点击查看更多>>
资源描述

《2022年Java集合框架实验报告.pdf》由会员分享,可在线阅读,更多相关《2022年Java集合框架实验报告.pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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

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

3、求修改源代码程序,给出具体的实现代码(不使用泛型类)。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 14 页 - - - - - - - - - - Java 集合框架实验报告void addStudent(Student student) / 添加一个学生对象booleana=true; for( inti =0; i students、size();i +) Student stud = (Student)students、get(i ); if( stud、getId()、equals

4、IgnoreCase(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); vo

5、id 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)s

6、tudents、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 +)

7、 Student stud = (Student)students、get(i ); if( stud、getName()、equalsIgnoreCase(name ) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 14 页 - - - - - - - - - - Java 集合框架实验报告st b= stud ; b+; returnst ; Student findByAge(intage ) inta=0; for( inti =0; i students、size();i +) S

8、tudent 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 ) st b= stud; b+; returnst ; 4)新创建listExample2 包,重新设计设计上述程序(新程序都属于这个包),这时需要使用泛型类 ,即出现的 List、Arra

9、yList 或 LinkedList 都使用泛型。private List 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 ) /根

10、据姓名删除学生对象Iterator iterator = students、iterator(); while( iterator、hasNext() Student st =(Student)iterator、 next(); if( st 、getName()=name ) iterator、remove(); void deleteStudentByAge(intage ) / 根据年龄删除学生对象Iterator iterator = students、iterator(); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - -

11、 - - - - - -第 3 页,共 14 页 - - - - - - - - - - Java 集合框架实验报告while( iterator、hasNext() Student st =(Student)iterator、 next(); if( st 、getAge()=age ) iterator、remove(); List findByName(String name ) List studs=new ArrayList(); for( inti =0; i students、size();i +) Student stud = (Student)students、get(i )

12、; if( stud、getName()、equals(name ) studs、add( stud ); returnstuds; List findByAge(intage ) List studs=new ArrayList(); for( inti =0; i students、size();i +) Student stud = (Student)students、get(i ); if( stud、getAge()=age ) studs、add( stud ); returnstuds; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归

13、纳 - - - - - - - - - -第 4 页,共 14 页 - - - - - - - - - - Java 集合框架实验报告3、 使用 Map 管理对象集合1)新建一个包MapExample 2)在这个包中新建三个类:Student 类,StudentMap 类,StudentMapTest 类。参考代码 Student、java, StudentMap、java,StudentMapTest、java 3)完善上面三个类,相关要求参考源代码程序的注释,即根据要求修改源代码程序,给出具体的实现代码(不使用泛型类)。void deleteStudentByName(String nam

14、e ) /根据学生姓名删除学生对象Collection values=students、values(); Iterator it=values、iterator(); while( it、hasNext() if( it、next()、getName()、equals(name) it、remove(); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 14 页 - - - - - - - - - - Java 集合框架实验报告 void deleteStudentByAge(intage

15、) / 根据学生年龄删除学生对象Collection values=students、values(); Iterator it=values、iterator(); while( it、hasNext() if( it、next()、getAge()=age ) it、remove(); Student findByName(String name) inta=0; Collection values=students、values(); Iterator it=values、iterator(); while( it、hasNext() if( it、next()、getName()、eq

16、uals(name) a+; intb=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 ) s b= ss ; b+; returns; Student findByAge(intage ) inta=0; Collection values=students、values(); Iterator i

17、t=values、iterator(); while( it、hasNext() if( it、next()、getAge()=age ) a+; intb=0; Student s=new Studenta; Collection values1=students、values(); Iterator it1=values1、iterator(); while( it1、hasNext() Student ss =it1、next(); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 14

18、页 - - - - - - - - - - Java 集合框架实验报告if( ss 、getAge()=age ) s b= ss ; b+; returns; 4)新创建 MapExample2 包,重新设计设计上述程序(新程序都属于这个包),这时需要使用泛型类 ,即出现的 Map、TreeMap 或 HashMap 都使用泛型。privateMap students= newHashMap(); void addStudent(Student student) /添加一个学生对象students、put(new Integer(student、getId(),student); Stude

19、nt findById(String id ) returnstudents、get(new Integer(id ); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 14 页 - - - - - - - - - - Java 集合框架实验报告4、 使用 Set 管理对象集合1)新建一个包SetExample 2)在这个包中新建三个类:Student 类,StudentSet类,StudentSetTest类。参考代码 :这三个类的参考代码见Student、 java, StudentSet

20、、 java,StudentSetTest、java 3)完善上面三个类,相关要求参考源代码程序的注释,即根据要求修改源代码程序,给出具体的实现代码(不使用泛型类)。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); 精品资料 - - - 欢迎下载 - - - - -

21、 - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 14 页 - - - - - - - - - - Java 集合框架实验报告 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 deleteS

22、tudentByAge(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、getNa

23、me()、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 ) st b= stud ; b+; returnst ; Student findByAge(intage ) inta=0; for( inti =0; i students、size();i +) Student

24、 stud = (Student)students、toArray()i ; if( stud、getAge()=age ) a+; Student st =new Studenta; intb=0; for( inti =0; i students、size();i +) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 14 页 - - - - - - - - - - Java 集合框架实验报告Student stud = (Student)students、toArray()i ; if(

25、 stud、getAge()=age ) st b= stud; b+; returnst ; 4)新创建SetExample2 包,重新设计设计上述程序(新程序都属于这个包),这时需要使用泛型类 ,即出现的 Set、TreeSet 或 HashSet 都使用泛型。注意 :Student 类实现 Comparable 接口的作用。void deleteStudentById(String id ) / 根据学号删除学生对象Iteratorit=students、iterator(); while( it、hasNext() if( it、next()、getId()、equalsIgnoreC

26、ase(id ) it、remove(); void deleteStudentByName(String name) / 根据姓名删除学生对象Iteratorit=students、iterator(); while( it、hasNext() if( it、next()、getName()、equalsIgnoreCase(name ) it、remove(); void deleteStudentByAge(intage ) /根据年龄删除学生对象Iteratorit=students、iterator(); while( it、hasNext() if( it、next()、getAg

27、e()=age ) it、remove(); publicclass Student implements Comparable /实现 Comparable接口对于TreeSet排序有用 publicint compareTo(Object arg0 ) Student stud = (Student)arg0 ; returnthis、getId()、compareTo(stud、getId(); 实现就是自定义排序功能精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 14 页 - - -

28、 - - - - - - - Java 集合框架实验报告精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 14 页 - - - - - - - - - - Java 集合框架实验报告5、 设计一个自定义的集合类四、实验结果与分析1、 请说明采用接口变量操作集合对象的方式,并阐述这么做的主要优点。提示 :在“使用 List 管理对象集合”的实验中,LinkedList 、ArrayList 两个类都可以管理一批对象 ,但就是程序中使用List 接口变量引用LinkedList 、 ArrayLi

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

30、- - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 14 页 - - - - - - - - - - Java 集合框架实验报告象类来满足调用者,这样调用者不必知道实现者怎样操作,实现者也可以根据具体情况去实现 ,这样去除了耦合。这就就是java 设计模式的基础思想之一。从 Java语法上 ,这种方式就是使用接口引用指向具体实现,这样大大提高了代码使用的灵活性。2、请说明LinkedList 、ArrayList 有何不同 ,各自适用于哪些场合?LinkedList: 采用链表来管理集合的元素。优点就是可以方便地进行元素的增加,删除。 即元素个数变化的代价较小,

31、但就是查询性能比数组差。ArrayList: 使用可变长度的数组来管理集合的元素。优点就是查询性能比链表好,缺点就是长度不可变化,删除元素代价大。LinkedList 适用于元素增加删除频繁的场合。ArrayList 适用于查询元素较频繁的场合3、请说明HashSet,TreeSet有何不同 ,各自适用于哪些场合?1、TreeSet中的数据就是自动排好序的,不允许放入null 值2、HashSet 中的数据就是无序的,可以放入null,但只能放入一个null, 两者中的值都不能重复 ,就如数据库中唯一约束3、 HashSet 要求放入的对象必须实现HashCode()方法 ,放入的对象 ,就是

32、以 hashcode码作为标识的 ,而具有相同内容的String 对象 ,hashcode就是一样 ,所以放入的内容不能重复。但就是同一个类的对象可以放入不同的实例4、 请说明 HashMap、TreeMap 有何不同 ,各自适用于哪些场合?HashMap 通过 hashcode对其内容进行快速查找,而 TreeMap 中所有的元素都保持着某种固定的顺序 ,如果您需要得到一个有序的结果您就应该使用TreeMap(HashMap 中元素的排列顺序就是不固定的)。5、 Iterator 与 For 循环都可以用于遍历集合中的元素,请问有何不同之处。Iterator:通用 ,对于所有集合,使用 It

33、erator 性能都一样 , 客户端自身不维护遍历集合的指针 ,所有的内部状态(如当前元素位置,就是否有下一个元素)都由 Iterator 来维护 ,而这个Iterator 由集合类通过工厂方法生成,因此 ,它知道如何遍历整个集合。客户端从不直接与集合类打交道,它总就是控制Iterator,向它发送 向前 ,向后 , 取当前元素 的命令 ,就可以间接遍历整个集合。For 循环 :虽然与 Iterator 性能差不多 ,但就是在查找链表如LinkedList 的时候遍历集合的开销会差别很大! 就以 LinkedList来说 ,用 get(i)方法来取元素的主要代码, 我们可以精品资料 - - -

34、 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 13 页,共 14 页 - - - - - - - - - - Java 集合框架实验报告瞧到 ,LinkedList 内的 get(i) 方法 ,用了循环方式来返回元素,性能肯定会差、6. 简单地分析比较不同集合类在选用上的主要原则。List 接口可以存储重复的数据。并且可以基于位置(下标 )操作集合。当增删改频繁的时候用LinkedList 。当查询频繁时用ArrayList Map 接口类似数学中的映射。对象的管理就是一组键-值得映射关系。主要就是适用于数量较多的对象管理。希望通过KEY 快速的查到对应的value。HashMap 就是通过哈希表管理的,允许 null TreeMap 该映射按照键自然排序。不允许为空Set接口不允许有重复的元素。HashSet 通过哈希算法管理允许 null TreeSet按照元素自然的排序五.讨论、心得(可写遇到的问题及解决方法,或者对技术的理解等) 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 14 页 - - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁