• 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

  • 相关阅读:
    python高级之操作数据库
    算法之矩阵计算斐波那契数列
    Mysql操作初级
    python高级之生成器&迭代器
    python高级之装饰器
    python高级之多进程
    python高级之多线程
    操作系统IO模型
    python高级之网络编程
    python高级之面向对象高级
  • 原文地址:https://www.cnblogs.com/wy2325/p/2984420.html
Copyright © 2020-2023  润新知