`
yucang52555
  • 浏览: 69860 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

(转载)ArrayList的contains方法

阅读更多
今天在用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); 
分享到:
评论

相关推荐

    Java中ArrayList的removeAll方法详解

    ArrayList的removeAll方法的实现机制是通过循环遍历ArrayList中的每个元素,然后使用contains方法判断该元素是否在另外一个集合中,如果在,则删除该元素。这种实现机制的问题是,它需要两层循环,时间复杂度为O(m*n...

    ArrayList常用的方法

    ### ArrayList常用的方法详解 在C#编程语言中,`ArrayList`是一种非常实用的数据结构,它提供了动态数组的功能,能够存储不同类型的元素,并且支持多种操作方法。本文将详细介绍`ArrayList`的一些常用方法及其应用...

    用java实现的栈,通过使用ArrayList的方法

    此方法是通过java提供的ArrayList方法对栈的实现;

    jni操作arraylist对象

    4. **调用ArrayList的add方法**:现在我们有了所有必要的元素,可以调用ArrayList的`add`方法了。 ```c++ env-&gt;CallBooleanMethod(listObj, addMethod, intValue); ``` 5. **处理可能出现的异常**:在JNI中,Java...

    Java中ArrayList的使用方法以及与vector的对比

    Java 中 ArrayList 的使用方法以及与 Vector 的对比 ArrayList 是 Java 中的一种动态数组,它提供了很多有用的特性,例如动态地增加和减少元素,实现了 ICollection 和 IList 接口,灵活的设置数组的大小等。下面...

    测试ArrayList和LinkedList的add方法

    测试ArrayList和LinkedList的add方法

    JavaScript 实现基础 ArrayList 功能

    为了提供更丰富的功能,还可以实现更多的方法,如清空ArrayList的`clear`方法、检查是否包含特定值的`contains`方法、合并两个ArrayList的`concat`方法等。 ```javascript ArrayList.prototype.clear = function() ...

    arraylist使用方法

    本篇将详细介绍ArrayList的使用方法,并结合给定的代码示例来解释如何在实际项目中应用。 首先,ArrayList的主要特点包括: 1. 动态性:ArrayList的大小不是固定的,可以随着添加或移除元素自动增长或缩小。 2. ...

    模拟arraylist底层实现

    在Java中,ArrayList是一种常用的集合类,提供了许多实用的方法来操作集合数据,而本文则尝试模拟ArrayList的底层实现,通过自定义集合实现类MyArrayList,来实现基本的集合操作。 模拟ArrayList的add方法 在...

    Android ArrayList关键字查询.rar

    这个方法可以使用`contains()`或`indexOf()`等字符串方法来检查关键字是否存在。例如: ```java public ArrayList&lt;MyObject&gt; searchByKeyWord(ArrayList&lt;MyObject&gt; dataList, String keyword) { ArrayList...

    ArrayList转化为DataTable

    在给定的代码段中,我们看到一个名为`manList`的方法,它的主要任务是将ArrayList对象转换为DataTable对象。这个方法首先创建了一个ArrayList实例`result`和一个DataTable实例`dt`。如果`result`不为空且包含至少一...

    你必须知道的C# ArrayList

    2. **ArrayList的主要方法** - `Add(object item)`: 向ArrayList末尾添加一个元素。 - `Insert(int index, object item)`: 在指定索引处插入一个元素。 - `Remove(object item)`: 删除第一个匹配给定值的元素。 ...

    Java基础-ArrayList方法全解(上).pdf

    - contains(Object o): 检查ArrayList是否包含指定的元素。 - size(): 返回ArrayList中的元素数量。 5. 查找和排序 - indexOf(Object o): 返回指定元素的第一个出现的索引,如果不存在则返回-1。 - lastIndexOf...

    ArrayList关键字查询demo

    这通常通过使用`contains()`方法或者自定义的比较逻辑实现。这里我们使用自定义的比较方法来展示如何实现: ```java public boolean containsKeyword(String keyword) { for (String item : dataList) { if (item...

    ArrayList深度剖析与简单实用

    ArrayList的核心概念基于数组,但比数组更加灵活,因为它支持动态增长和缩小,同时也提供了丰富的操作方法。 1. **ArrayList的定义与使用** ArrayList是一种基于数组的列表,它允许我们在不预先知道确切大小的情况...

    arraylist用法

    - `ArrayList.Synchronized`:如果需要同步访问,则可以通过调用`ArrayList.Synchronized`方法获取一个新的同步化的`ArrayList`实例。例如: ```csharp ArrayList list = new ArrayList(); lock (list.SyncRoot...

    如何遍历ArrayList

    遍历ArrayList的多种方法 ArrayList是一种常用的Java集合类,它可以存储多个元素,并提供了多种遍历元素的方法。在本文中,我们将介绍ArrayList的多种遍历方法,并比较它们之间的区别。 使用Iterator遍历ArrayList...

    Arraylist例子代码 java

    使用`contains()`方法可以判断ArrayList是否包含特定元素。 ```java boolean hasElement = list.contains("NewElement"); // 如果包含"NewElement"返回true ``` 7. **遍历ArrayList** 可以通过增强for循环...

    arrayList排序

    在处理大量数据时,排序是常见的需求,本篇文章将深入探讨ArrayList的排序方法。 首先,ArrayList本身并不提供直接的排序功能,但我们可以借助Java提供的`Collections.sort()`方法来实现排序。`Collections.sort()`...

    ASP .NET - ArrayList对象

    Count属性返回ArrayList中的元素数量,Insert方法在指定位置插入元素,Sort和BinarySearch方法用于排序和搜索元素(需要IComparer接口支持),以及Clear方法用于清空ArrayList。 9. 注意事项 虽然ArrayList灵活且...

Global site tag (gtag.js) - Google Analytics