当我们建立一个购物车类,里面包含了一个hashMap<Product,Integer>的时候,我们往这个hashMap中放入一个相同的Product对象,如果不重写,新加入的不会和原有的合并,而是以一个新的键值对插入。所以当hashMap中的key是自定义的类时,我们就需要在自定义类中重写hashCode和equals方法。这样hashMap才能判断两个相同的自定义类是相同的:
购物车类:
public class Cart {
// 购买商品的集合
private HashMap<Product, Integer> mapProduct;
// 购物车的总金额
private double totalPrice;
重写Product类中的方法:
public class Product implements Serializable{
@Override
public int hashCode() {
// TODO Auto-generated method stub
return this.pid;
}
@Override
public boolean equals(Object obj) {
if(this==obj){
return true;
}else if(obj instanceof Product)
{
Product o=(Product)obj;
if(this.getPid()==o.getPid()){
return true;
}
else return false;
}
else return false;
}