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

关于判断List中课程是否存在 为什么要在Course中重写equals()方法??

rt

rt

rt

提问者:猛禽斩侧卫 2016-01-16 19:49

个回答

  • l_yanlei
    2016-02-20 15:55:20

    首先你得明白contains方法的原理。

    http://img.mukewang.com/56c81a540001fc1309080506.jpg

    如上图,contains(obj)的原理是:

    1. 遍历List中所有的元素。

    2. 每遍历一个元素,就调用这个元素的equals()方法,判断这个元素是否与contain(obj)传入的obj相同。

      即Element.equals(obj);

    3. 若有一个相同,则返回true

    4. 若所有都不相同,则返回false

    那么,既然是要调用List中每个元素的equals方法。而现在List的元素都是什么呢?

    在这里,就是之前放进去的Course类的对象。也就是说,当contains()遍历每个对象,再调用每个对象的equals()方法时,实际上是调用Course类中的equals()方法。既然你想要equals()方法能做别的事情,只要重写它就好了。

  • JaredJojo
    2016-01-17 11:16:03

    两个object是通过内存地址来比较时候相同,即使是属性相等的两个对象,如果过对应的不是同一个地址,那么用系统默认的equal比较时就会返回false