重写了hashcode()和equals()方法之后输出结果还是false
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 int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof Course))
return false;
Course other = (Course) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
/**
* 测试Set的contains方法
* @param args
*/
public void testSetContains(){
System.out.println("请输入学生已选的课程名称:");//提示输入课程名称
String name=input.next();
Course course3=new Course();
course3.name=name;
System.out.println("新创建课程:"+course3.name);
System.out.println("备选课程中是否包含课程:"+course3.name+","+
student.courses.contains(course3));
}
public static void main(String[] args) {
SetTest st=new SetTest();
st.testAdd();
st.testForEach();
st.createStudentAndSelectCours();
st.testSetContains();
}
输出结果
有如下课程待选(通过for each访问):
课程:2,经济数学
课程:1,高等数学
课程:5,西方经济学
课程:6,统计学
课程:3,英语听说
课程:4,英语读写
欢迎同学:小明选课!
请输入课程ID:
4
请输入课程ID:
5
请输入课程ID:
6
请输入学生已选的课程名称:
统计学
新创建课程:统计学
备选课程中是否包含课程:统计学,false