今天在用ArrayList类的cantains方法时遇到了问题,我写了一个存放User类的ArrayList ,放入一个user对象, 但在调用list.contains(user1)时总是返回false(此处user1与user字段值完全相同)。 去看了下ArrayList的源码:
[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()方法传入的参数是null,则直接在list找有没有null元素,如果传入的参数不是null,则contains函数用调用equals方法,把传入的参数与list中每个元素做比较。此处Object的equals默认的是比较的是两个对象的地址。当然就不相等啦。
解决方案,在User中重写equals方法,实现比较两个对象的字段相等的逻辑
[java] view plaincopy
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);
分享到:
相关推荐
ArrayList常用的方法如下: Add 添加到 ArrayList 的結尾處 Remove 從 ArrayList 中移除特定對象的第一個匹配項 RemoveAt 移除 ArrayList 的指定索引處的元素 Insert 將元素插入 ArrayList 的指定索引處 ...
此方法是通过java提供的ArrayList方法对栈的实现;
测试ArrayList和LinkedList的add方法
集合ArrayList测试集合ArrayList测试集合ArrayList测试集合ArrayList测试集合ArrayList测试集合ArrayList测试
在jni中操作arraylist对象,然后添加一个int型数据进去
ArrayList重要的方法和属性(1)构造器 ArrayList提供了三个构造器 Count属性和Capacity属性 4、ArrayList与数组转换 Array的复杂版本 ArrayList常用方法 ArrayList同步机制 ArrayList内存节省方法 ArrayList使用...
什么是ArrayList? 如何使用ArrayList? ArrayList重要的方法和属性?
详细介绍Java中ArrayList的使用方法以及与vector的对比
C语言版的ArrayList,具有ArrayList的基本方法增加、插入、删除、自动扩容等。
主要给大家介绍了关于Java中ArrayList的removeAll方法的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编一起来看看吧。
一个C++(Ubuntu16.04+QT5.9.1)通过JNI,调用JAVA类及方法的示例。通过JNI传递和返回多种类型的参数,boolean ,int,String,ArrayList,ArrayList嵌套ArrayList<ArrayList<String>>等。
arrayList排序arrayList排序arrayList排序
ArrayList删改查方法.pdf
详细说明ArrayList类的使用方法,掌握ArrayList的技巧!
arraylist .
关于java的arraylist的使用方法,里面还有相应的程序代码
1.2ArrayList类常用方法【应用】 1.2.1构造方法 1.2.2成员方法 1.2.3示例代码 public class ArrayListDemo02 { public static void main(String[] args) { //创建集合 ArrayList<String> array = new ...
使用对象ArrayList填充DataGrid,C#源代码ArrayList MyList = new ArrayList();
ASP .NET - ArrayList对象ASP .NET - ArrayList对象ASP .NET - ArrayList对象ASP .NET - ArrayList对象
ArrayList转化为DataTable数据加载转换方便程序的灵活运用!