重写equals()和hashCode()
什么时候需要重写equals()?
只有当一个实例等于它本身的时候,equals()才会返回true值。通俗地说,此时比较的是两个引用是否指向内存中的同一个对象,也可以称做是否实例相 等。而我们在使用equals()来比较两个指向值对象的引用的时候,往往希望知道它们逻辑上是否相等,而不是它们是否指向同一个对象。在这样的情况下, 如果超类也没有重写equals()以实现期望的行为,这时我们就需要重写equals方法。
下面看一个简单示例,我们需要一系列的orderElement对象,但是当propertyName已经有的情况下,我们就不在需要,那么其实我们在比较两个对象的时候只需要知道他们的property值是否相等就可以了:
 public class OrderElement {
     public OrderElement() {
     }
     public OrderElement(Integer orderNo, String propertyName, boolean isAsc) {
         this.orderNo = orderNo;
         this.propertyName = propertyName;
         this.isAsc = isAsc;
     }
     private Integer orderNo;
     private String propertyName;// 排序属性
     private boolean isAsc;// 是否正序
     public Integer getOrderNo() {
         return orderNo;
     }
     public void setOrderNo(Integer orderNo) {
         this.orderNo = orderNo;
     }
     public String getPropertyName() {
         return this.propertyName;
     }
     public void setPropertyName(String propertyName) {
         this.propertyName = propertyName;
     }
     public boolean getIsAsc() {
         return this.isAsc;
     }
     public void setAsc(boolean isAsc) {
         this.isAsc = isAsc;
     }
     @Override
     public boolean equals(Object obj) {
         if (obj == null || !this.getClass().getName().equals(obj.getClass().getName()))
             return false;
         OrderElement e = OrderElement.class.cast(obj);
         if (getPropertyName() != null && e.getPropertyName() != null && getPropertyName().equals(e.getPropertyName()))
             return true;
         return super.equals(obj);
     }
     @Override
     public int hashCode() {
         if (getPropertyName() != null) {
             return getPropertyName().hashCode();
         }
         return super.hashCode();
     }
 }
这个应用非常常用,有需要的话我们都应该在自己的类中重写这两个方法!
重写equals()和hashCode()的更多相关文章
- Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(转)
		Java中==.equals.hashcode的区别与重写equals以及hashcode方法实例 原文地址:http://www.cnblogs.com/luankun0214/p/4421770 ... 
- 为什么要重写equals和hashcode方法
		equals hashcode 当新建一个java类时,需要重写equals和hashcode方法,大家都知道!但是,为什么要重写呢? 需要保证对象调用equals方法为true时,hashcode ... 
- Java中equals()和hashCode()的关系以及重写equals()和hashCode()的重要性
		转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6580647.html 一:关系 如果两个对象相等(equal),它们的hashcode一定相同: 如果两个对 ... 
- 如何正确的重写equals() 和 hashCode()方法
		比较两个Java对象时, 我们需要覆盖equals和 hashCode. public class User{ private String name; private int age; priva ... 
- 为什么要同时重写equals和hashcode
		原文地址https://blog.csdn.net/tiantiandjava/article/details/46988461 原文地址https://blog.csdn.net/lijiecao0 ... 
- Java:重写equals()和hashCode()
		Java:重写equals()和hashCode() 1.何时需要重写equals() 当一个类有自己特有的“逻辑相等”概念(不同于对象身份的概念). 2.设计equals() [1]使用instan ... 
- 【转】Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例
		原文地址:http://www.cnblogs.com/luankun0214/p/4421770.html 感谢网友的分享,记录下来只为学习. 1.重写equals方法实例 部分代码参考http ... 
- 重写equals()与hashCode()方法
		出自:http://blog.csdn.net/renfufei/article/details/16339351 Java语言是完全面向对象的,在java中,所有的对象都是继承于Object类.Oj ... 
- 为什么要重写equals和hashCode
		1.重写equals方法时需要重写hashCode方法,主要是针对Map.Set等集合类型的使用: a: Map.Set等集合类型存放的对象必须是唯一的: b: 集合类判断两个对象是否相等,是先判断e ... 
- Java重写equals()和hashCode()
		1.何时需要重写equals() 当一个类有自己特有的 ”逻辑相等”概念(不同于对象身份的概念). 2.设计equals() [1]使用instanceof操作符检查 ”实参是否为正确的类型”. [2 ... 
随机推荐
- php 类的相互访问
			========================================================================================== // public ... 
- 一分钟搭建Vue2.0+Webpack2.0多页面项目
			想要自己一步步搭建的比较麻烦,不是很推荐,最少也要使用vue-cli,在其基础上开始搭建,今天我的主题是一分钟搭建,那么常规方法肯定不能满足的, 而我用的方法也很简单,就是使用已经配置完成的demo模 ... 
- 史上最全的判断android,ios还是ipad访问,附上多种语言的实现方式
			js判断: (function(a,b){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elain ... 
- programing
			body, table{font-family: 微软雅黑; font-size: 13.5pt} table{border-collapse: collapse; border: solid gra ... 
- Redis集群方案怎么做?大牛给你介绍五种方案!
			Redis集群方案 Redis数据量日益增大,而且使用的公司越来越多,不仅用于做缓存,同时趋向于存储这块,这样必促使集群的发展,各个公司也在收集适合自己的集群方案,目前行业用的比较多的是下面几种集群架 ... 
- HX711初步处理记录
			参考文档为极客工坊大神记录 http://www.geek-workshop.com/forum.php?mod=viewthread&tid=2315&highlight=hx711 ... 
- sql 查询 ORA-12170 TNS 连接超时特殊原因
			一般对于ORA-12170这个问题 1 看数据ip 是否能ping通 2 数据库服务是否启动 3 数据库服务所在服务器防火墙 然而当你能进去数据,而报这个这错时: 1 看代码中数据库连接是写错 2 如 ... 
- CopyOnWriteArrayList集合排序异常问题
			1.集合自定义排序实现 对List集合的自定义排序想必大家都知道要使用如下的方式,通过实现Comparator接口并实现compare方法来实现. /** * * @方法名 changeChain * ... 
- awk打印第n个参数到最后一个技巧/将n行组成一列
			打印第n参数到最后一个参数 文本的NF不等,即字段长度不固定,想截取从$3到$NF 第一反应是使用循环 [root@localhost ~]# echo "1 2 3 4 5" | ... 
- mybatis-spring最新版下载地址
			mybatis-spring最新版下载地址: http://mvnrepository.com/artifact/org.mybatis/mybatis-spring/1.2.3 mybatis-sp ... 
