equals方法是判断PO是否相等的重要方法,当然覆写equals方法的同时要求也是要覆写hashCode方法的,以下实例了PO中覆写的一般方式.
package test.base;
import java.io.Serializable;
public abstract class UserInfo implements Serializable {
private int hashCode = Integer.MIN_VALUE;
// primary key
private java.lang.String userId;
// fields
private java.lang.String userName;
private java.lang.String userAccount;
public UserInfo() {
}
public UserInfo(java.lang.String userId) {
this.setUserId(userId);
}
public java.lang.String getUserId() {
return userId;
}
public void setUserId(java.lang.String userId) {
this.userId = userId;
//因为hashCode()方法和主键值有关,重新设置主键值时要还原hashCode值.
this.hashCode = Integer.MIN_VALUE;
}
public java.lang.String getUserName() {
return this.userName;
}
public void setUserName(java.lang.String userName) {
this.userName = userName;
}
public java.lang.String getUserAccount() {
return this.userAccount;
}
public void setUserAccount(java.lang.String userAccount) {
this.userAccount = userAccount;
}
public boolean equals(Object obj) {
if (null == obj)
return false;
if (!(obj instanceof test.base.UserInfo))
return false;
else {
test.base.UserInfo mObj = (test.base.UserInfo) obj;
if (null == this.getUserId() || null == mObj.getUserId())
return false;
else
return (this.getUserId().equals(mObj.getUserId()));
}
}
public int hashCode() {
//这样做的目的就是hashCode值只需要计算一次.
if (Integer.MIN_VALUE == this.hashCode) {
if (null == this.getUserId())
return super.hashCode();
else {
String hashStr =
this.getClass().getName()
+ ":"
+ this.getUserId().hashCode();
this.hashCode = hashStr.hashCode();
}
}
return this.hashCode;
}
}
分享到:
相关推荐
重写equals和hashcode方法,学习和进步
这里是一个文档,里边讲解了hashCode与equals方法使用,大家要是不明白,可以去看看
本文还介绍了定义对象的相等性、实施equals()和hashCode()的需求、编写自己的equals()和hashCode()方法。通过统一定义equals()和hashCode(),可以提升类作为基于散列的集合中的关键字的使用性。
如果一个类的hashCode()方法没有遵循上述要求,那么,当这个类的两个实例对象用equals()方法比较的结果相等时,他们本来应该无法被同时存储进set集合
今天小编就为大家分享一篇关于关于Object中equals方法和hashCode方法判断的分析,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
equals()和hashcode()这两个方法都是从object类中继承过来的。当String 、Math、还有Integer、Double。。。。等这些封装类在使用equals()方法时,已经覆盖了object类的equals()方法.
关于重写equals,hashcode以及compareTo方法!
1.概述 2.为什么重写equels方法要重写hashcode方法 3.例子
主要介绍了Java重写equals及hashcode方法流程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
在Java中,equals和hashCode方法是Object中提供的两个方法,这两个方法对以后的学习有很大的帮助,本文就深度来去讲解这两个方法。下面小编带大家来一起学习吧
本文中详细的阐述了Java中经常遇到的equals、hashcode以及“==”号三者之间的区别
本篇文章详细介绍了Java中的equals和hashCode方法详解,Object 类是所有类的父类,非常具有实用价值,需要的朋友可以参考下。
NULL 博文链接:https://alpha2009.iteye.com/blog/570322
原因是因为,在Java自带的容器HashMap和HashSet中, 都需同时要用到对象的hashCode()和equals()方法来进行判断,然后再插入删除元素,这点我们一会再谈。 那么我们还是单独来看hashCode(),为什么HashMap需要用到...
NULL 博文链接:https://jackosn-liao.iteye.com/blog/528757
更清楚的了解hashcode()和equals()方法。
Java容器集合(equals 和 hashCode+基础数据结构+ArrayList+Vector和LinkedList)
Java重写equals同时需要重写hashCode的代码说明,以及如何重写hashCode方法,此代码演示按照effective java书籍说明的重写思路。代码中演示了使用集合存储对象,并且对象作为key,需重写equals和hashCode.
Java equals 方法与hashcode 方法的深入解析.rar
文章目录1、hashCode与equals两者之间的关系2、== 和equals的区别`3、为什么要重写equals()方法?4、重写equals()方法5、为什么要重写hashCode()方法?6、什么时候需要重写hashCode()方法?7、重写hashCode()方法: ...