zoukankan      html  css  js  c++  java
  • ArrayList的contains方法[转]

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

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


    发现在contains方法会调用 o.equals(elementData[i])方法,其中elementData[i]是个object类的实例。也就是说我在调用list.contains(user)时实际上比较的是user.equals(object) 这当然会返回false。 

    正确的方法,在User类中改写equals方法。 改写的代码如下:
     

    1 public boolean equals(Object obj) {   
    2         if (obj instanceof User) {   
    3             User u = (User) obj;   
    4             return this.username.equals(u.username)   
    5                     && this.password.equals(password);   
    6         }   
    7         return super.equals(obj);  
    8 }

    原文链接:http://blog.csdn.net/witsmakemen/article/details/7323604

  • 相关阅读:
    P2048 [NOI2010]超级钢琴
    [LOJ#6468.] 魔法
    [牛客小白月赛18] Forsaken的数列
    [JSOI2011]柠檬
    [TJOI2015]组合数学
    【单调队列优化】[CF372C] Watching Fireworks is Fun
    【线段树】[Luogu P4198]楼房修建
    Python资源
    人生的几个阶段
    两种解读,生活的意义和方法
  • 原文地址:https://www.cnblogs.com/wy2325/p/2984420.html
Copyright © 2011-2022 走看看