泛型集合删除自定义类对象的方法
在做购物车的时候把商品添加进了泛型集合,做删除的时候根据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
删除成功