第1节 学生选课——判断List中课程是否存在
List和Set判断是否包含某个元素的方法都是一样的
contains方法是将List或Set中的所有元素与obj执行equals方法。(关于equals的知识在第二季 U3 第7节中有)
public void testListContains(){
//取得备选课程序列的第0个元素
Course course=coursesToSelect.get(0);
System.out.println("取得课程"+course.name);
System.out.println("备选课程中是否包含课程:"+course.name+","+coursesToSelect.contains(course));
//创建一个新的课程对象(与course拥有相同id和名称,但是对象不同)
Course course2=new Course(course.id,course.name);
System.out.println("新创建课程"+course2.name);
System.out.println("备选课程中是否包含课程:"+course2.name+","+coursesToSelect.contains(course2));
//有时只知道课程名称,通过名称判断是否包含这门课程,
//可通过for循环遍历名称,但是比较麻烦
//依然可以通过contains判断是否包含这门课程,重写equals方法即可。
}
重写equals
@Override
public boolean equals(Object obj) {
// TODO Auto-generated method stub
if(this==obj)
return true;
if(obj==null)
return false;
if(!(obj instanceof Course))//判断类型
return false;
//以上三条都满足则说明obj是Course类型且非空
Course course=(Course)obj;
if(this.name==null){
if(course.name==null)
return true;
}else{
if(this.name.equals(course.name))
return true;
else
return false;
}
return true;
}