问答详情
源自:6-2 学生选课---判断 Set 中课程是否存在

重写了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


提问者:慕田峪4398233 2016-06-13 17:20

个回答

  • 小志冲冲冲
    2021-04-09 16:52:54

    解决了吗

  • xusiman
    2017-09-26 00:30:34

    去看Course方法的重写,id属性剔除!

  • 赵昱权
    2016-09-19 20:10:10

    有大神来解答吗?这个折磨我一个晚上了!

  • victor_Lau
    2016-08-23 16:46:35

    解决了吗?我也是这样

  • 略坑
    2016-07-01 10:53:09

    我也是这个问题,有大神解决了吗


  • RainZ
    2016-06-19 11:26:10

    代码贴全一点