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

在做购物车的时候把商品添加进了泛型集合,做删除的时候根据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

 

删除成功

转载于:https://www.cnblogs.com/ZEROYING/p/5394137.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值