java List集合中contains方法总是返回false
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相关推荐
- java在集合中的方法变动的类_java中级面试题 之基础篇
一.Java基础 1. 实例方法和静态方法有什么不一样? 1.在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方 ...
- java中load_java之Properties集合中的方法load
各位小伙伴们大家好在之前文章中小编介绍了java之Properties集合中的方法store,这次小编要介绍的是Properties集合中的方法load,具体如下: 可以使用Properties集合中 ...
- Java集合中contains方法的效率对比
Java集合中contains方法的效率对比 Java集合List.Set中均有对集合中元素是否存在的判断方法contains(Object o):Map中有对key及value是否存在的判断方法co ...
- Java Store_java之Properties集合中的方法store
各位小伙伴们大家好,在之前的文章中,小编介绍了使用Properties集合存储数据,这次小编要介绍的是Properties集合中的方法store,具体如下: 可以使用Properties集合中的方法s ...
- Java面试题:IO流中read()方法为什么返回值是int
Question:IO流中read()方法为什么返回值是int? anwser:因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte, ...
- java empty isempty_Java中isEmpty方法如何使用?
展开全部 isEmpty()方法有很多类都有,对于String类,62616964757a686964616fe4b893e5b19e31333264656134它是Java 6.0引入的, 当且仅当 ...
- Java异常打印输出中常见方法的分析
Java异常是在Java应用中的警报器,在出现异常的情况下,可以帮助我们程序猿们快速定位问题的类型以及位置.但是一般在我们的项目中,由于经验阅历等多方面的原因,依然有若干的童鞋在代码中没有正确的使用异 ...
- java操作集合中 concurrentModifyException 异常的原因分析
java操作集合中 concurrentModifyException 异常的原因分析 参考文章: (1)java操作集合中 concurrentModifyException 异常的原因分析 (2) ...
- Java类Demo中存在方法func1、func2、func3和func4,请问该方法中,哪些是不合法的定义?( )
Java类Demo中存在方法func1.func2.func3和func4,请问该方法中,哪些是不合法的定义?( ) public class Demo{float func1(){int i=1;r ...
最新文章
- 机器学习实践中的10个小秘诀!
- 推出第一个免费工具CCT
- scipy笔记:scipy.sparse
- 深度学习核心技术精讲100篇(七十七)-主流推荐引擎技术及优缺点分析
- 计算机检索规则,搜索引擎的语法规则
- Boost:基于Boost的一个微小的actor框架
- 【OS】操作系统体系结构
- javafx 和swing_集成JavaFX和Swing
- 飞鸽传书原创代码测试
- 机器学习与计算机视觉(被忽视的isp图像处理)
- Head First Java Stick 01
- 如何 shuffle 一个 vector 以及 vectorvector
- 单片机的一些名词解释
- R语言数据分析之二-《R语言判断相关性-excel文件xlsx文件》
- 强化学习:Markov Decision Process (基于南大俞扬博士演讲的修改和补充)
- 奋斗路上若有你,弱水三千取一瓢——计算机操作系统以及python基本语法,第三天
- 服务端通过AWS SNS创建消息推送记录
- 健康低辐射,信号全覆盖,飞鱼星i-Home覆盖方案上市
- Warren Krupsaw教你拍照:光线改变一切
- 6. 设计模式之迭代思维:如何高效编程?