泛型集合删除自定义类对象的方法

在做购物车的时候把商品添加进了泛型集合,做删除的时候根据ID重新从数
据库查找商品,从集合删除时失败,然后简单敲了个demo测试,首先定义一个类

public class student {
     private String name;
     private String pad;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPad() {
        return pad;
    }
    public void setPad(String pad) {
        this.pad = pad;
    }
}

然后定义泛型集合,new两个类比较

List<student> sList=new ArrayList<student>();
          student s1=new student();
          System.out.println(s1);
          student s2=new student();
          System.out.println(s2);
          System.out.println(s1.equals(s2));
          sList.add(s1);
          System.out.println(sList.size());
          sList.remove(s2);
          System.out.println(sList.size());

输出结果为

输出结果为[code=java]
dao.models.student@4f1d0d
dao.models.student@1fc4bec
false
1
1

 

我们发现两个对象之间并不相等,所以删除失败!网上查找了一下要 比较对象必须要重写equals()方法

http://blog.csdn.net/chenxuejiakaren/article/details/7839000, 重写方法

public class student {
     private String name;
     private String pad;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPad() {
        return pad;
    }
    public void setPad(String pad) {
        this.pad = pad;
    }
    public boolean equals(Object obj){  
        if(obj == null){  
            return false;  
        }else {           
                if(this.getClass() == obj.getClass()){  
                    student s = (student) obj; 
                    if(((this.getName()==null&&s.getName()==null)||this.getName().equals(s.getName()))&&((this.getPad()==null&&s.getPad()==null)||this.getPad().equals(s.getPad())))
                    {                       
                          return true;  
                    }
                    else{  
                        return false;  
                    }  
                  
            }else{  
                return false;  
            }  
        }             
    }  
}

 

这里判断确实有些恶心,
重新执行man函数,输出结果

dao.models.student@4f1d0d
dao.models.student@1fc4bec
true
1
0

 

删除成功

posted @ 2016-04-15 09:38  影七  阅读(182)  评论(0编辑  收藏  举报