1.判断List中的课程是否存在(在SetTest类中)
//测试List的contains方法(某个序列是否包含某个对象) public void testListContains(){ //取得备选课程的第0个元素 Course course = CourseToSelect.get(0); //打印输出CourseToSelect是否包含course对象 System.out.println("取得课程"+course.name); System.out.println("备选课程中是否包含:"+course.name+","+CourseToSelect.contains(course)); //创建一个新的课程对象,课程的ID和name和course相同 Course course2 = new Course(course.id,course.name); System.out.println("新课程:"+course2.id+","+course2.name); System.out.println("备选课程中是否包含:"+course2.name+","+CourseToSelect.contains(course2)); }
Contains方法:是从原来List中取出的元素才可以显示为true,即使建立新的对象中含有的内容和原List中含有对象的内容相同,也返回的事false。(因为java中所有的类都继承Object,而Object类中的equals判断内容是否相同。在Contains中是先取出元素elements再equals比较。)
改写Course类中的equals方法(如果是课程对象内容相同则都返回true)
package com.collection; public class Course { public String id; public String name; public Course(String id,String name) { this.id=id; this.name=name; } public Course(){ } @Override public boolean equals(Object obj){ if(this == obj){ return true; } if(obj == null){ return false; } if(!(obj instanceof Course)){ return false; } Course course = (Course) obj; if(this.name==null){ if(course.name==null){ return true; } else{ return false; } }else{ if(this.name.equals(course.name)){ return true; }else{ return false; } } } }
2.通过改写equlas方法,实现了从控制台输入课程对象,测试原课程CourseToSelect中是否包含新建的课程对象’
//测试List的contains方法(某个序列是否包含某个对象) public void testListContains(){ //取得备选课程的第0个元素 Course course = CourseToSelect.get(0); //打印输出CourseToSelect是否包含course对象 System.out.println("取得课程"+course.name); System.out.println("备选课程中是否包含:"+course.name+","+CourseToSelect.contains(course)); //提示输出课程名称 System.out.println("请输入课程名称"); String name = console.next(); //创建一个新的课程对象,课程的ID和name和course相同 Course course2 = new Course(); course2.name=name; System.out.println("新课程:"+course2.name); System.out.println("备选课程中是否包含:"+course2.name+","+CourseToSelect.contains(course2)); }