大学城市学院实验报告课程名称 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都使用泛型。