为什么要重写equals方法呢

来源:6-1 学生选课---判断 List 中课程是否存在

fenkapian

2016-06-10 22:20

新实例化的课程对象本来就不在courseToSelect集合中啊,contains方法当然会返回false,为什么非得重写equals方法让contains返回true呢?

写回答 关注

2回答

  • 予远方
    2016-06-11 15:54:51
    已采纳

    要看比较的目的了,是比较对象(引用)还是比较实际值了。

    默认equals在比较俩个对象的时候,是看他们是否指向同一个地址的。

    但有时候我们希望比较俩个对象的某些属性值是否相同,如果相同的话就认为他们的equals为true。

    比如:

    Student s1 = new Student(1,”name1”);
    Student s2 = new Student(1,”name1”);

    如果用默认的equals比较s1和s2 的话,结果肯定为false,但是我们只是希望

    比较他们的name是否相同,这个时候就需要重写equals方法了。


    fenkap...

    非常感谢!

    2016-06-12 09:50:08

    共 1 条回复 >

  • 慕粉2333013499
    2017-01-20 20:28:44

    其实我感觉不用contains方法,直接用course2.name==name  这个方法还简单粗暴

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409781 学习 · 4339 问题

查看课程

相似问题