Java集合框架实验报告
- 格式:docx
- 大小:41.24 KB
- 文档页数:12
浙江大学城市学院实验报告课程名称__________ J ava __________ 高级程序设计 __________________________ 实验项目名称________ 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) 完善上面三个类,相关要求参考源代码程序的注释,即根据要求修改源代码程序,给出具体的实现代码(不使用泛型类) 。
void addStudent(Student student){〃添加一个学生对象boolean a= true ;for (int i=0;i<students.size();i++){Stude nt stud = (Stude nt)stude nts.get(i);if (stud.getld().equalslgnoreCase(student.getld()))a=false ;}if (a==true )students.add(student);//_ 修改代码,保证students集合中所有学生对象的id 号唯一}void deleteStudentByld(String id){// 根据学号删除学生对象for (int i=0;i<students.size();i++){Stude nt stud = (Stude nt)stude nts.get(i);if (stud.getId().equalsIgnoreCase(id))stude nts.remove(stud);}}void deleteStudentByName(String name){// 根据姓名删除学生对象for (int i=0;i<students.size();i++){Stude nt stud = (Stude nt)stude nts.get(i);if (stud.getName().equalsIgnoreCase(name))stude nts.remove(stud);}}void deleteStudentByAge( int age){// 根据年龄删除学生对象for (int i=0;i<students.size();i++){Stude nt stud = (Stude nt)stude nts.get(i);if (stud.getAge()==age)stude nts.remove(stud);}}Student[] findByName(String name){int a=0;for (int i=0;i<students.size();i++){Stude nt stud = (Stude nt)stude nts.get(i);if (stud.getName().equalsIgnoreCase(name))a++;}Stude nt[] st= n ew Stude nt[a];int b=0;for (int i=0;i<students.size();i++){Stude nt stud = (Stude nt)stude nts.get(i);if (stud.getName().equalslgnoreCase(name)){st[b]=stud;b++;}}return st;}Student[] findByAge( int age){int a=0;for (int i=0;i<students.size();i++){Stude nt stud = (Stude nt)stude nts.get(i);if (stud.getAge()==age)a++;}Stude nt[] st= new Stude nt[a];int b=0;for (int i=0;i<students.size();i++){Stude nt stud = (Stude nt)stude nts.get(i);if (stud.getAge()==age){st[b]=stud;b++;}}return st;}4) 新创建listExample2 包,重新设计设计上述程序(新程序都属于这个包),这时需要使用泛型类,即出现的List、ArrayList 或LinkedList 都使用泛型。
private List<Stude nt> stude nts = new ArrayList<Stude nt>();void deleteStudentByld(String id){// 根据学号删除学生对象Iterator<Stude nt> iterator = students.iterator(); __while (iterator.hasNext()){Stude nt st=(Stude nt)iterator. next();if (st.getId()==id) iterator.remove();}}void deleteStudentByName(String name){〃根据姓名删除学生对象Iterator<Stude nt> iterator = students.iterator(); __while (iterator.hasNext()){Stude nt st=(Stude nt)iterator. next(); if (st.getName()==name) iterator.remove(); }}void deleteStudentByAge( int age){〃 根据年龄删除学生对象 lterator<Stude nt>iterator = stude nts.iterator(); while (iterator.hasNext()) {Stude nt st=(Stude nt)iterator. next(); if (st.getAge()==age) iterator.remove(); }}List<Stude nt> fin dByName(Stri ng n ame){List<Stude nt> studs= new ArrayList<Stude nt>();for (int i=0;i<students.size();i++){Student stud = (Student)students.get(i); if (stud.getName().equals(name)){ studs.add(stud);} }return studs; }List<Student> findByAge( List<Stude nt> studs= for (int i=0;i<students.size();i++){Student stud = (Student)students.get(i); if (stud.getAge()==age)studs.add(stud); }return studs;}int age){new ArrayList<Student>();□ Problems ㈤」avadoc 冋声明貝控制台盘v已绦止洽StudentListTest [Java 应用程序]Cj\Program Files\Java\jre1.8<0_60\bin\java共有占个对象001Bill20002Bob22003Hill20004Alice IS0053ob IB006Alice13按照学号查找学生对象001 Bill 20查找姓名为魚丄让亡的所育学生对象[00弓Alice 18f006查找年龄为辺岁的学生对象(004 Alice 18, 005删除学号为0"的学生对象共有5个对象002 Bob 22003 Hill 2000^ Alice 10005 Bab IB006 Alice ld|刪除姓名为AXe的学生对象共有3个对象002 Bob 22003 Hill 2000S Bob IS刪除年龄为昭的学生对象共有2个对象002 Bob 22003 Hill 20 Alice IS]Bob 18f 006 Alice 18]3、使用Map管理对象集合1)新建一个包 Map Example2)在这个包中新建三个类: Student 类,StudentMap 类,StudentMapTest 类。
参考代码 Student.java,StudentMap.java,StudentMapTest.java 3)完善上面三个类,相关要求参考源代码程序的注释,即根据要求修改源代码程序,给出具体的实现代码(不使用泛型类)。
void deleteStudentByName(String name){〃根据学生姓名删除学生对象Collect ion< Stude nt> values=students.values(); lterator<Stude nt>it=values.iterator();while (it.hasNext()){if (it.next().getName().equals(name))it.remove();}}void deleteStudentByAge( int age){〃根据学生年龄删除学生对象Collect ion< Stude nt> values=students.values();_lterator<Stude nt> it=values.iterator();while (it.hasNext()){if (it.next().getAge()==age)it.remove();}}Student[] findByName(String name){int a=0;Collect ion< Stude nt> values=students.values();Iterator<Stude nt> it=values.iterator(); while (it.hasNext()){ if (it.next().getName().equals(name))a++;}int b=0;Stude nt[] s= n ew Stude nt[a];Collect ion< Stude nt> values仁students.values();Iterator<Stude nt> it1=values1.iterator();while (it1.hasNext()){Stude nt ss=it1. next();if (ss.getName().equals(name)){s[b]=ss; b++;}}return s;Student[] findByAge( int age){int a=0;Collect ion< Stude nt> values=stude nts.values();Iterator<Stude nt> it=values.iterator(); while (it.hasNext()){ if (it.next().getAge()==age)a++;} int b=0;Stude nt[] s= n ew Stude nt[a];Collect ion< Stude nt> values仁stude nts.values(); lterator<Stude nt>it1=values1.iterator();while (it1.hasNext()){Stude nt ss=it1. next();if (ss.getAge()==age){s[b]=ss;b++;}return s;4) 新创建MapExample2包,重新设计设计上述程序(新程序都属于这个包) ,这时需要使用泛型类,即出现的Map TreeMap或HashMap都使用泛型。