A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈云阳 高级黑马   /  2014-6-28 01:48  /  1272 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 陈云阳 于 2014-6-28 13:51 编辑

newAl.contains(obj);

newAL为空,
Obj不为空,

那么调用contains到底有没有调用equals(e)方法


  1. contains

  2. public boolean contains(Object o)
  3. 如果此列表中包含指定的元素,则返回 true。更确切地讲,当且仅当此列表包含至少一个满足 (o==null ? e==null : o.equals(e)) 的元素 e 时,则返回 true。
  4. 指定者:
  5. 接口 Collection<E> 中的 contains
  6. 指定者:
  7. 接口 List<E> 中的 contains
  8. 覆盖:
  9. 类 AbstractCollection<E> 中的 contains
  10. 参数:
  11. o - 测试此列表中是否存在的元素
  12. 返回:
  13. 如果此列表包含特定的元素,则返回 true
复制代码


这是contains的说明文档,(o==null ? e==null : o.equals(e))  这里o就是obj的引用,o不为空,应该就会调用equals才对,为什么运行时却没调用equals方法,有没谁知道contains完整的实现方 法

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

5 个回复

正序浏览
龙泉长空 发表于 2014-6-28 15:03
看到集合这就迷糊了...

其实如果有学过数据结构的,学集合就会容易些,集合底层就是数据结构
回复 使用道具 举报
菜小徐 发表于 2014-6-28 14:50
equals的底层还是用==的,关键是比较的对象

这里面不太明白的就是   当集合里只有一个元素时,编译运行后,调用contains,contains运行时没有调用
equals方法,但是按照API说明文档里面的三木运算来执行的话,集合只有一个元素的情况equals应该是会被执行才对啊,所以想知道contains底层到底是怎么运行的,有点纳闷
回复 使用道具 举报
看到集合这就迷糊了...
回复 使用道具 举报
equals的底层还是用==的,关键是比较的对象

评分

参与人数 1技术分 +1 收起 理由
李小然 + 1

查看全部评分

回复 使用道具 举报
{:2_32:}有没人来帮忙解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马