ArrayList的contains方法
java
今天在用ArrayList类的caontains方法是遇到了问题,我写了一个存放User类的ArrayList  但在调用list.contains(user)时总是返回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;   }
[java] view plaincopy
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。 正确的方法,在User类中改写equals方法。 改写的代码如下:
Java代码
public boolean equals(Object obj) {   if (obj instanceof User) {   User u = (User) obj;   return this.username.equals(u.username)   && this.password.equals(password);   }   return super.equals(obj);  

转自:http://blog.csdn.net/witsmakemen/article/details/7323604

转载于:https://www.cnblogs.com/tony-yang-flutter/p/list_contains.html

java List集合中contains方法总是返回false相关推荐

  1. java在集合中的方法变动的类_java中级面试题 之基础篇

    一.Java基础 1. 实例方法和静态方法有什么不一样? 1.在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方 ...

  2. java中load_java之Properties集合中的方法load

    各位小伙伴们大家好在之前文章中小编介绍了java之Properties集合中的方法store,这次小编要介绍的是Properties集合中的方法load,具体如下: 可以使用Properties集合中 ...

  3. Java集合中contains方法的效率对比

    Java集合中contains方法的效率对比 Java集合List.Set中均有对集合中元素是否存在的判断方法contains(Object o):Map中有对key及value是否存在的判断方法co ...

  4. Java Store_java之Properties集合中的方法store

    各位小伙伴们大家好,在之前的文章中,小编介绍了使用Properties集合存储数据,这次小编要介绍的是Properties集合中的方法store,具体如下: 可以使用Properties集合中的方法s ...

  5. Java面试题:IO流中read()方法为什么返回值是int

    Question:IO流中read()方法为什么返回值是int? anwser:因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte, ...

  6. java empty isempty_Java中isEmpty方法如何使用?

    展开全部 isEmpty()方法有很多类都有,对于String类,62616964757a686964616fe4b893e5b19e31333264656134它是Java 6.0引入的, 当且仅当 ...

  7. Java异常打印输出中常见方法的分析

    Java异常是在Java应用中的警报器,在出现异常的情况下,可以帮助我们程序猿们快速定位问题的类型以及位置.但是一般在我们的项目中,由于经验阅历等多方面的原因,依然有若干的童鞋在代码中没有正确的使用异 ...

  8. java操作集合中 concurrentModifyException 异常的原因分析

    java操作集合中 concurrentModifyException 异常的原因分析 参考文章: (1)java操作集合中 concurrentModifyException 异常的原因分析 (2) ...

  9. Java类Demo中存在方法func1、func2、func3和func4,请问该方法中,哪些是不合法的定义?( )

    Java类Demo中存在方法func1.func2.func3和func4,请问该方法中,哪些是不合法的定义?( ) public class Demo{float func1(){int i=1;r ...

最新文章

  1. 机器学习实践中的10个小秘诀!
  2. 推出第一个免费工具CCT
  3. scipy笔记:scipy.sparse
  4. 深度学习核心技术精讲100篇(七十七)-主流推荐引擎技术及优缺点分析
  5. 计算机检索规则,搜索引擎的语法规则
  6. Boost:基于Boost的一个微小的actor框架
  7. 【OS】操作系统体系结构
  8. javafx 和swing_集成JavaFX和Swing
  9. 飞鸽传书原创代码测试
  10. 机器学习与计算机视觉(被忽视的isp图像处理)
  11. Head First Java Stick 01
  12. 如何 shuffle 一个 vector 以及 vectorvector
  13. 单片机的一些名词解释
  14. R语言数据分析之二-《R语言判断相关性-excel文件xlsx文件》
  15. 强化学习:Markov Decision Process (基于南大俞扬博士演讲的修改和补充)
  16. 奋斗路上若有你,弱水三千取一瓢——计算机操作系统以及python基本语法,第三天
  17. 服务端通过AWS SNS创建消息推送记录
  18. 健康低辐射,信号全覆盖,飞鱼星i-Home覆盖方案上市
  19. Warren Krupsaw教你拍照:光线改变一切
  20. 6. 设计模式之迭代思维:如何高效编程?

热门文章

  1. PHP autoload 函数
  2. 剖析PHP中的输出缓冲
  3. .Net 中字符串性能
  4. C#如何在Form中嵌入并且操作Excel表格
  5. 常用Maven收集以及Maven技巧
  6. 服务器架设笔记——打通MySQL和Apache
  7. Python3中None用法
  8. C++11中std::shared_future的使用
  9. 【GStreamer】官网基本教程学习(basic-tutorial)
  10. step by step YAML 复用