为了账号安全,请及时绑定邮箱和手机立即绑定

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


正在回答

6 回答

解决了吗

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

解决了吗?我也是这样

0 回复 有任何疑惑可以回复我~

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


0 回复 有任何疑惑可以回复我~
#1

是禹不是雨

我知道怎么回事了 是因为重写方法的时候把id也勾上了,不能勾选id
2016-07-12 回复 有任何疑惑可以回复我~
#2

赵昱权 回复 是禹不是雨

我试了这个做法,好像并不是这样的问题啊
2016-09-19 回复 有任何疑惑可以回复我~

代码贴全一点

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

重写了hashcode()和equals()方法之后输出结果还是false

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信