您的位置:首页 > 大数据 > 人工智能

List Contains方法使用问题

2017-11-09 17:22 316 查看
今天在用ArrayList类的contains方法是遇到了问题,我写了一个存放User类的ArrayList  但在调用list.contains(对象)时总是返回false。 去看了下ArrayList的源码,源码如下: 

Java代码 

 





public boolean contains(Object o) {
  

    return indexOf(o) >= 0;
  

    }   

  

  

 public int indexOf(Object o) {
  

    if (o == null) {
  

        for (int i = 0; i < size; i++)
  

        if (elementData[i]==null)
  

            return i;
  

    } else {
  

        for (int i = 0; i < size; i++)
  

        if (o.equals(elementData[i]))
  

            return i;
  

    }   

    return -1;
  

    }  

发现在contains方法会调用 o.equals(elementData[i])方法,其中elementData[i]是个object类的实例。也就是说我在调用list.contains(user)时实际上比较的是user.equals(object) 这当然会返回false。 

所以要使用对比一些对象的时候要对该对象的equals方法重写,且list的constains方法的效率不高,建议使用hashset的constains方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: