`
nothing0318
  • 浏览: 4907 次
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

ArrayList的contains方法

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

相关推荐

    C#检查指定对象是否存在于ArrayList集合中的方法

    主要介绍了C#检查指定对象是否存在于ArrayList集合中的方法,涉及C#中Contains方法的使用技巧,需要的朋友可以参考下

    07:ArrayList集合的增删减除.pdf

    1.长 增加add,查看下表,遍历,删除值,...7.Contains():判断是否包含某一个元素 8.ToArray();--object 不足:1.如果存储值类型,需要装箱和拆箱操作 2.不管什么类型的数据,存储之后,取出来使用必须通过类型转换

    java基础——集合ArrayList ,LinkedList

    目录前言数组与集合区别集合描述集合格式方法ArrayList实例1.add(E e)2.add(int index, E element)3.addAll(Collection c)4.clear() 与 isEmpty()5.contains(Object o)6.indexOf(Object o)7.iterator()8.remove(int ...

    集合anylist要进行筛选.pdf

    ILsit接口成员:add、insert、RemoveAt、Remove、contains、Clear、indexof方法,它最大的特色在于提供类似数组索引的访问机制。 ArrayList对象是较为复杂的数组。我们可以将它看为扩充了功能的数组,但ArrayList...

    Java开发者常犯的十个错误

    文章列出了Java开发者常犯的是个错误。 ...java.util.Arrays.ArrayList有set(), get(), contains()方法,但没有任何能增加元素的方法,所以它的大小是确定的。  为了创建一个真正的ArrayList,

    performance_javadoc:标准Javadoc doclet的扩展,增加了临时测量方法性能的可能性

    大致了解此性能扩展的外观,您可以看到为ArrayList类的方法contains(Object)生成的性能扩展,它使用户可以选择实例(ArrayList)的大小,以该大小来衡量方法的性能。 该项目包含两个工具:Doclet 我们还扩展了...

    进销存系统文档作业例子

    HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是...

    C#全能速查宝典

    1.5.5 Contains方法——确定是否包含某项 99 1.5.6 ContainsKey方法——确定哈希表是否包含特定键 100 1.5.7 ContainsText方法——确定剪贴板中是否存在数据 101 1.5.8 ContainsValue方法——确定哈希表是否包含特定...

    Java程序员容易犯的10个错误

    Java程序员容易犯的10个错误,Arrays.asList() 会返回一个ArrayList,这是Arrays里内嵌的一个私有静态类,而并不是java.util.ArrayList类java.util.Arrays.ArrayList 有set(), get(), contains()方法,但并支持添加...

    C实现的关联规则算法

    private ArrayList tData = new ArrayList(); //事务数据 private int minSup = 2; //最小支持度计数阀值 private ArrayList C0 = new ArrayList(); //L的超集 private ArrayList L0 = new ArrayList(); //频繁k...

    关于JAVA面试的100题及其答案

    HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是...

    Collectionjs:SortedSet,SortedList,Queue,ArrayList,LinkedList,TreeSet,HashMap

    console.log("Contains k "+sets.contains("k")); for(var c in sets.toArray()) console.log(sets.get(c)); var list=new Collection.SortedList(); list.compare=function(a,b) { if(a.name&lt;b&gt;b.name) return

    alphaSort:通过哈希表结构进行字典搜索

    alpha排序 这种数据结构提供了一种快速的方法来确定单词是否在较大的列表中,而这会花费设置时间。 测试输出: Dictionary size: 370099 ...使用上述大小的列表,isWord方法比ArrayList.contains快3个数量级。

    欧拉回路程序java

    // ArrayList linked = new ArrayList(); // linked.add(new Integer(0)); // Random rand = new Random(); // // for (i = 1; i ; i++) { // int size = linked.size(); // // int top = ((Integer) ...

    asp.net 数组中字符串替换的几种方式

    代码如下://方法1 protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { ReplaceStr(); } } public void ReplaceStr() { ArrayList MyArray = new ArrayList(); MyArray.Add(“123”); ...

    超级有影响力霸气的Java面试题大全文档

    HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是...

    java 面试题 总结

    HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类,而HashMap是Java1.2引进的Map interface的一个实现。 最大的不同是...

Global site tag (gtag.js) - Google Analytics