ArrayList的contains方法[转]

今天在用ArrayList类的caontains方法是遇到了问题,我写了一个存放User类的ArrayList 但在调用list.contains(user)时总是返回false。 去看了下ArrayList的源码,源码如下:

contains(Object o) { 2return indexOf(o) >= 0; 3 } indexOf(Object o) { 7if (o == null) { 8for (int i = 0; i < size; i++) 9if (elementData[i]==null) 10return i; 11} else { 12for (int i = 0; i < size; i++) 13if (o.equals(elementData[i])) 14return i; 15 } 16return -1; 17}

发现在contains方法会调用 o.equals(elementData[i])方法,网站空间,虚拟主机,香港空间,其中elementData[i]是个object类的实例。也就是说我在调用list.contains(user)时实际上比较的是user.equals(object) 这当然会返回false。正确的方法,在User类中改写equals方法。 改写的代码如下:

equals(Object obj) {2if (obj instanceof User) {3User u = (User) obj;.username.equals(u.username)5&& this.password.equals(password);6 }.equals(obj); 8 }

原文链接:

唯有斯人面上簌簌流下的,是点点无声无行的热泪。

ArrayList的contains方法[转]

相关文章:

你感兴趣的文章:

标签云: