浙江大学城市学院实验报告课程名称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,StudentListTest、java3)完善上面三个类,相关要求参考源代码程序的注释,即根据要求修改源代码程序,给出具体的实现代码(不使用泛型类)。
void addStudent(Student student){//添加一个学生对象boolean a=true;for(int i=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(int i=0;i<students、size();i++){Student stud = (Student)students、get(i);if(stud、getId()、equalsIgnoreCase(id))students、remove(stud);}}void deleteStudentByName(String name){//根据姓名删除学生对象for(int i=0;i<students、size();i++){Student stud = (Student)students、get(i);if(stud、getName()、equalsIgnoreCase(name))students、remove(stud);}}void deleteStudentByAge(int age){//根据年龄删除学生对象for(int i=0;i<students、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;i<students、size();i++){Student stud = (Student)students、get(i);if(stud、getName()、equalsIgnoreCase(name))a++;}Student[] st=new Student[a];int b=0;for(int i=0;i<students、size();i++){Student stud = (Student)students、get(i);if(stud、getName()、equalsIgnoreCase(name)){st[b]=stud;b++;}}return st;}Student[] findByAge(int age){int a=0;for(int i=0;i<students、size();i++){Student stud = (Student)students、get(i);if(stud、getAge()==age)a++;}Student[] st=new Student[a];int b=0;for(int i=0;i<students、size();i++){Student stud = (Student)students、get(i);if(stud、getAge()==age){st[b]=stud;b++;}}return st;}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(int age){//根据年龄删除学生对象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(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(int age){List<Student> studs=new ArrayList<Student>();for(int i=0;i<students、size();i++){Student stud = (Student)students、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){//根据学生姓名删除学生对象Collection<Student> values=students、values();Iterator<Student> it=values、iterator();while(it、hasNext()){if(it、next()、getName()、equals(name))it、remove();}}void deleteStudentByAge(int age){//根据学生年龄删除学生对象Collection<Student> values=students、values();Iterator<Student> it=values、iterator();while(it、hasNext()){if(it、next()、getAge()==age)it、remove();}}Student[] findByName(String name){int a=0;Collection<Student> values=students、values();Iterator<Student> it=values、iterator();while(it、hasNext()){if(it、next()、getName()、equals(name))a++;}int b=0;Student[] s=new Student[a];Collection<Student> values1=students、values();Iterator<Student> it1=values1、iterator();while(it1、hasNext()){Student ss=it1、next();if(ss、getName()、equals(name)){s[b]=ss;b++;}}return s;}Student[] findByAge(int age){int a=0;Collection<Student> values=students、values();Iterator<Student> it=values、iterator();while(it、hasNext()){if(it、next()、getAge()==age)a++;}int b=0;Student[] s=new Student[a];Collection<Student> values1=students、values();Iterator<Student> it1=values1、iterator();while(it1、hasNext()){Student ss=it1、next();if(ss、getAge()==age){s[b]=ss;b++;}}return s;}4)新创建MapExample2包,重新设计设计上述程序(新程序都属于这个包),这时需要使用泛型类,即出现的Map、TreeMap或HashMap都使用泛型。