今天在用ArrayList类的caontains方法是遇到了问题,我写了一个存放User类的ArrayList 但在调用list.contains(user)时总是返回false。 去看了下ArrayList的源码,源码如下:
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方法。 改写的代码如下:
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的removeAll方法的实现机制是通过循环遍历ArrayList中的每个元素,然后使用contains方法判断该元素是否在另外一个集合中,如果在,则删除该元素。这种实现机制的问题是,它需要两层循环,时间复杂度为O(m*n...
本篇将详细介绍ArrayList的使用方法,并结合给定的代码示例来解释如何在实际项目中应用。 首先,ArrayList的主要特点包括: 1. 动态性:ArrayList的大小不是固定的,可以随着添加或移除元素自动增长或缩小。 2. ...
为了提供更丰富的功能,还可以实现更多的方法,如清空ArrayList的`clear`方法、检查是否包含特定值的`contains`方法、合并两个ArrayList的`concat`方法等。 ```javascript ArrayList.prototype.clear = function() ...
这个方法可以使用`contains()`或`indexOf()`等字符串方法来检查关键字是否存在。例如: ```java public ArrayList<MyObject> searchByKeyWord(ArrayList<MyObject> dataList, String keyword) { ArrayList...
- contains(Object o): 检查ArrayList是否包含指定的元素。 - size(): 返回ArrayList中的元素数量。 5. 查找和排序 - indexOf(Object o): 返回指定元素的第一个出现的索引,如果不存在则返回-1。 - lastIndexOf...
2. **ArrayList的主要方法** - `Add(object item)`: 向ArrayList末尾添加一个元素。 - `Insert(int index, object item)`: 在指定索引处插入一个元素。 - `Remove(object item)`: 删除第一个匹配给定值的元素。 ...
这通常通过使用`contains()`方法或者自定义的比较逻辑实现。这里我们使用自定义的比较方法来展示如何实现: ```java public boolean containsKeyword(String keyword) { for (String item : dataList) { if (item...
ArrayList的核心概念基于数组,但比数组更加灵活,因为它支持动态增长和缩小,同时也提供了丰富的操作方法。 1. **ArrayList的定义与使用** ArrayList是一种基于数组的列表,它允许我们在不预先知道确切大小的情况...
使用`contains()`方法可以判断ArrayList是否包含特定元素。 ```java boolean hasElement = list.contains("NewElement"); // 如果包含"NewElement"返回true ``` 7. **遍历ArrayList** 可以通过增强for循环...
这可能包括了ArrayList的实现、相关的操作方法以及可能的优化措施。通过查看源代码,我们可以学习到如何在JavaScript环境中模拟ArrayList的行为,以及如何处理与Java中的ArrayList不同的问题,如线程安全和动态扩容...
除了基本操作,ArrayList还提供了一些其他功能,如`indexOf()`(查找元素的索引)、`contains()`(判断是否包含特定元素)、`clear()`(清空列表)等。在实际开发中,根据需求选择合适的方法使用ArrayList,可以提高...
需要注意的是,尽管使用此方法创建的`ArrayList`是线程安全的,但在进行枚举时仍然需要显式锁定`SyncRoot`属性以避免异常。 ##### 3. Count 和 Capacity 属性 - **Count**: 表示当前`ArrayList`中元素的数量,只读...
ArrayList的Add方法可以轻松添加元素,Clear方法可以快速清空所有元素,IndexOf方法可以查找特定元素的索引,Contains方法用于检查元素是否存在,Remove方法和RemoveAt方法则用于删除指定元素。此外,ArrayList还...
本篇文章将详细讲解如何使用C#的ArrayList类的Contains方法来检查指定对象是否存在于ArrayList集合中。 首先,创建一个ArrayList实例是必要的。例如: ```csharp ArrayList alcollect = new ArrayList(); ``` 然后...
它提供了一系列的方法来添加、删除和检索元素,如`Add()`、`Remove()`、`Contains()`等。 #### 二、批量添加数据到ArrayList 在实际应用中,经常需要将大量的数据一次性添加到`ArrayList`中。例如,在处理数据库...
8. `contains(Object o)`: 检查ArrayList是否包含特定对象。 9. `addAll(Collection<? extends E> c)`: 将指定集合中的所有元素添加到ArrayList的末尾。 在管理系统中,可能会有以下功能: 1. 添加学生:调用...
- `Contains`方法检查ArrayList是否包含特定的元素。 - `IndexOf`和`LastIndexOf`方法分别返回元素的第一个和最后一个出现的索引。 - `CopyTo`方法将ArrayList复制到一个数组中。 - `TrimToSize`方法将`Capacity...
此外,ArrayList 还提供了许多其他有用的方法,例如,list.clear() 方法用来清空 ArrayList,list.contains(E e) 方法用来判断 ArrayList 中是否包含某个元素,list.isEmpty() 方法用来判断 ArrayList 是否为空等等...
Java 中数组列表 ArrayList 的使用 ArrayList 是 Java 中的一种...此外,ArrayList 还有很多其他的方法和属性,例如 Clear、Contains、IndexOf 等,大家可以查看 MSDN,了解更多关于 ArrayList 的使用方法和技巧。
此外,ArrayList还提供了一些其他功能,如确保容量的方法`ensureCapacity(int minCapacity)`,以及检查是否包含特定元素的`contains(Object o)`方法。这些方法都在源码中有着详细的实现逻辑。 通过深入学习...