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

求Java大神解答

为什么具有相同的ID和name的两个对象,course被包含在coursesToSelect里面,而course2却没包括在内呢?

提问者:qq_柒分醉_03927370 2016-10-09 21:30

个回答

  • 慕粉3882300
    2017-01-17 13:32:26

    contains方法是基于equals方法实现的,equals方法的初始行为是比较对象的内存地 址,只有当对象的内存地址相同时,才能返回true值。(在一些类库当中这个方法被覆盖掉了,如String,Integer,Date在这些类当中equals有其自身的实现,而不再是比较类在堆内存中的存放地址了)

  • taylorfeng
    2016-10-20 16:45:02

    当使用equals()的时候,对象指向地址必须相同才能返回true。course2虽然name和id与course一致,但是它是新创建的一个对象,所以存储地址不同不存在coursesToSelect中。而course本身就添加在coursesToSelect中的,所以当然是与coursesToSelect中的那个指向同一个对象的存储地址,所以返回true。

  • 精慕门6603618
    2016-10-10 23:13:15

    set接口的容器类中的元素是没有顺序的,但不能有重复

  • 太期待丶
    2016-10-10 08:33:41

    coursesToSelect如果是set集合的话  set是不能包含重复元素的