qq_柒分醉_03927370
2016-10-09 21:30
为什么具有相同的ID和name的两个对象,course被包含在coursesToSelect里面,而course2却没包括在内呢?
contains方法是基于equals方法实现的,equals方法的初始行为是比较对象的内存地 址,只有当对象的内存地址相同时,才能返回true值。(在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了)
当使用equals()的时候,对象指向地址必须相同才能返回true。course2虽然name和id与course一致,但是它是新创建的一个对象,所以存储地址不同不存在coursesToSelect中。而course本身就添加在coursesToSelect中的,所以当然是与coursesToSelect中的那个指向同一个对象的存储地址,所以返回true。
set接口的容器类中的元素是没有顺序的,但不能有重复
coursesToSelect如果是set集合的话 set是不能包含重复元素的
Java入门第三季
409792 学习 · 4340 问题
相似问题