rt
rt
rt
首先你得明白contains方法的原理。
如上图,contains(obj)的原理是:
遍历List中所有的元素。
每遍历一个元素,就调用这个元素的equals()方法,判断这个元素是否与contain(obj)传入的obj相同。
即Element.equals(obj);
若有一个相同,则返回true
若所有都不相同,则返回false
那么,既然是要调用List中每个元素的equals方法。而现在List的元素都是什么呢?
在这里,就是之前放进去的Course类的对象。也就是说,当contains()遍历每个对象,再调用每个对象的equals()方法时,实际上是调用Course类中的equals()方法。既然你想要equals()方法能做别的事情,只要重写它就好了。
两个object是通过内存地址来比较时候相同,即使是属性相等的两个对象,如果过对应的不是同一个地址,那么用系统默认的equal比较时就会返回false