加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 包含和等于

发布时间:2020-12-15 02:01:42 所属栏目:Java 来源:网络整理
导读:我对某些代码感到有些困惑: for (AbstractItem item : mSetOfItems) { if (item.equals(pPrimaryItem)) { System.out.println("Contains? " + mSetOfItems.contains(pPrimaryItem)); }} 如何将item.equals(pPrimaryItem)解析为true,并将mSetOfItems.contain
我对某些代码感到有些困惑:

for (AbstractItem item : mSetOfItems) {
        if (item.equals(pPrimaryItem))
        {
            System.out.println("Contains? " + mSetOfItems.contains(pPrimaryItem));
        }
}

如何将item.equals(pPrimaryItem)解析为true,并将mSetOfItems.contains(pPrimaryItem)解析为false?因为这就是我在代码中看到的内容.

换句话说,如果我遍历我的集合,我可以找到一个等于我的test元素的元素.但是如果我使用contains,我的测试元素不会被报告在集合中.我很困惑,因为我认为包含使用的等于.我能俯瞰什么?

解决方法

你没有给出mSetOfItems的类型,但我猜测AbstractItem会覆盖.equals()但不会覆盖.hashcode().这是不好的.

如果mSetOfItems使用哈希码进行查找,它可以基于其类型,您将获得您描述的行为.

你的假设是.contains()是用迭代和.equals()实现的.没有列表界面可以保证这一点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读