重写hashcode和equals的原因探究
2017-05-30 13:22
351 查看
大家都知道,map中存放的是键值对,值可以重复,键不可以重复。如果键不存在,则存入其中,如果键已存在。则新值替换旧值。而这个所谓的判断键是否存在就是这个键对象的hashcode值对比,当这两个值相同时,才会使用equals方法对比。当我们做一个购物车时,我们可能使用map的实现类hashmap;我们的键可能是一个实体类,实体类存放着我们购买商品的名称,编号和价格,而我们的值是商品的购买数量。而当我们买同一件商品new不同的实体类时,这时的键被认为是不同的,而我们想让两个同样的商品合并,这时我们就要在实体类里重写hashcode和equas方法了。
实体类Item
以上重写了两个方法就可以按照我们自己的标准判断是否是相同元素
实体类Item
public class Item{ private String name; private double price; private int id; //get和set方法省略 @Override public int hashCode(){ return this.getId()+this.getName().hashCode();//相同字符串的hashcode值相同 } @Override public int equals(Object object){ if(this==obj){ return true; } if(obj instanceof Item){ Item i=(Item)obj; if(this.getId()==i.getId() &&this.getName.equals(obj.getName)){ return true; } }else{ return false } } }
以上重写了两个方法就可以按照我们自己的标准判断是否是相同元素
相关文章推荐
- 详解重写equals()方法就必须重写hashCode()方法的原因
- 重写equals()方法就必须重写hashCode()方法的原因
- toString、hashCode、equals的重写原因与重写示例
- 重写equals方法一般需要重写hashCode方法的原因
- 详解重写equals()方法就必须重写hashCode()方法的原因
- 详解重写equals()方法就必须重写hashCode()方法的原因
- 为什么要重写hashcode和equals方法
- [Java] 容器-01 实现 Comparable 接口 / 重写 equals 与 hashCode (1个图 1个类 3个知识点 6个接口)
- JAVA中重写equals()方法的同时要重写hashcode()方法
- 关于重写equals,hashcode以及compareTo方法
- 浅谈HashMap以及重写hashCode()和equals()方法
- Java:重写equals()和hashCode()
- JAVA中重写equals()方法的同时要重写hashcode()方法
- 【Core Java Volume1】重写equals,hashCode,toString方法
- 关于为什么要重写hashCode()方法和equals()方法及如何重写
- 重写equals 和 hashcode
- java集合---hashcode和equals的重写
- Java重写equals方法时为什么要重写hashcode方法
- 为什么使用HashSet储存对象时必须重写equals和hashcode方法
- 在重写了对象的equals方法后,还需要重写hashCode方法吗?