使用EqualsBuilder简化equals的方法的重写
2017-12-17 14:13
381 查看
我们都知道,在定义对象时,我们不会知道类的域回事什么类型
或者是基本类型,又或者是引用类型
传统的比较方法是,在比较基本类型时:
使用”==”,但是在比较引用类型是我们不能通过这种方式去比较
当然这种比较也没有什么实际意义
所以在比较域时就产生了问题,当大量的引用域,与大量的基本类型域一起组成对象时
我想你在比较类型相同方面基本疯了
EqualsBuilder类是重写equals方法的工具类
常用方法如下
append(Object lhs,Object rhs)
//如果两者对象相等,返回true否者返回false
append(int lhs,int rhs);
如果两者对象相等,返回true否者返回false
append(double lhs,double rhs);
如果两者对象相等,返回true否者返回false
isEquals()
如果检查的域都相等,就返回true否则就返回false
那么我们在重写equals方法就简单了
当然我们在重写了equals方法后也要重写hashCode方法
计算哈希码的方式很多,一般来说就是选择质数相乘后各域相加
这个不了解的可以看看数据结构,大致的意识是质数的线性散列更好,具体的不记得了,大家可以查书
4000
或者是基本类型,又或者是引用类型
传统的比较方法是,在比较基本类型时:
使用”==”,但是在比较引用类型是我们不能通过这种方式去比较
当然这种比较也没有什么实际意义
所以在比较域时就产生了问题,当大量的引用域,与大量的基本类型域一起组成对象时
我想你在比较类型相同方面基本疯了
EqualsBuilder类是重写equals方法的工具类
常用方法如下
append(Object lhs,Object rhs)
//如果两者对象相等,返回true否者返回false
append(int lhs,int rhs);
如果两者对象相等,返回true否者返回false
append(double lhs,double rhs);
如果两者对象相等,返回true否者返回false
isEquals()
如果检查的域都相等,就返回true否则就返回false
那么我们在重写equals方法就简单了
在这里使用cat作为类对象 @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } Cat cat = (Cat) obj; //在实际的开发过程中,我们不知道一个对象的域是应用类型还是基本类型 //采用EqualsBuilder可以解决这个问题 return new EqualsBuilder().append(name, cat.name).append(age, cat.age).append(weight, cat.weight).append(color, cat.color).isEquals(); }
当然我们在重写了equals方法后也要重写hashCode方法
@Override public int hashCode(){ return 7 * name.hashCode() + 11 * new Integer(age).hashCode() + 13 * new Double(weight).hashCode() + 17 * color.hashCode(); }
计算哈希码的方式很多,一般来说就是选择质数相乘后各域相加
这个不了解的可以看看数据结构,大致的意识是质数的线性散列更好,具体的不记得了,大家可以查书
4000
相关文章推荐
- 使用EqualsBuilder和HashCodeBuilder重写equals、hashCode方法
- Hibernate中用到联合主键的使用方法,为何要序列化,为何要重写hashcode 和 equals 方法
- java中hashMap使用一个对象作为key时,对key进行唯一性表达重写equals()方法
- 使用Set存储Object对象,重写equals和hashCode方法
- 使用commons-lang.jar包以及反射机制实现javabean的equals,hashCode和toString三个方法重写
- Equals() 和运算符 == 的重写准则及使用方法
- 使用EqualsBuilder和HashCodeBuilder实现hashCode()和equals()方法
- 为什么使用HashSet储存对象时必须重写equals和hashcode方法
- 重写类中的equals方法进行过滤使用HashSet
- 注解的力量 -----Spring 2.5 JPA hibernate 使用方法的点滴整理(五):使用@Component 来简化bean的配置
- 重写函数的Equals方法,来确定需要比较类是否相同的条件
- HashMap中重写hashCode和equals方法
- HashSet中equals()与hashCode()方法的重写
- 重写equals()方法
- java对象equals方法的重写
- java中重写equals方法
- JAVA重写equals方法
- C#基础篇 重写与重载,以及其中设计的虚方法和抽象方法的使用和区别
- 使用AjaxPro出现错误(没有找到适合的方法来重写)
- Java中关于==和equal的区别 以及equals()方法重写