为了账号安全,请及时绑定邮箱和手机立即绑定

求Java大神解答

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

正在回答

4 回答

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

0 回复 有任何疑惑可以回复我~

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

1 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

qq_柒分醉_03927370 提问者

coursesToSelect是List集合
2016-10-10 回复 有任何疑惑可以回复我~
#2

太期待丶 回复 qq_柒分醉_03927370 提问者

重写equals方法
2016-10-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409792    人
  • 解答问题       4340    个

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

进入课程

求Java大神解答

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信