返回顶部

收藏

java重写object的hashCode(),equals()方法示例

更多

java重写object的hashCode(),equals()方法示例

equals()和hashCode()方法解释:

equals() (javadoc) 用来定义判断对象是否和另外一个对象相等,它必须是可逆的,对称的,并且是可传递的.

另外,equals方法也必须是稳定的(在两个对象都没有变化期间,他们之间equals应该返回一致的值)

hashCode() (javadoc) 必须是稳定的,假如对象相等,他们必须返回相同的hashCode

也就是说假定a.equals(b)成立,那么a.hashCode()必须等于b.hashCode();

下面是一个实现equals和hashCode的类示例:

public class Person {
    private String name;
    private int age;
    // ...

    public int hashCode() {
        return new HashCodeBuilder(17, 31). // two randomly chosen prime numbers
            // if deriving: appendSuper(super.hashCode()).
            append(name).
            append(age).
            toHashCode();
    }

    public boolean equals(Object obj) {
        if (obj == null)
            return false;
        if (obj == this)
            return true;
        if (obj.getClass() != getClass())
            return false;

        Person rhs = (Person) obj;
        return new EqualsBuilder().
            // if deriving: appendSuper(super.equals(obj)).
            append(name, rhs.name).
            append(age, rhs.age).
            isEquals();
    }
}

标签:java,OOD,HashCode

收藏

0人收藏

支持

0

反对

0

相关聚客文章
  1. kangzj 发表 2014-03-28 02:49:55 关于Java类的hashCode和equals方法
  2. root 发表 2015-04-15 01:34:01 Java中==、equals、hashcode的区别与重写equals以及hashcode方法实例(
  3. 沈义扬 发表 2014-01-18 08:00:31 [Google Guava] 1.3-常见Object方法
  4. dwzone 发表 2015-09-29 03:38:50 hashCode与equals的区别与联系
  5. 博主 发表 2013-10-31 15:30:00 从Java的hashCode方法谈起
  6. jasper 发表 2014-03-28 02:49:55 关于Java类的hashCode和equals方法
  7. root 发表 2015-04-27 07:10:01 Java 基础:hashCode方法
  8. 博主 发表 2014-05-20 09:55:45 Java中影响方法调用性能的因素
  9. Eric 发表 2017-03-03 07:53:34 图解java String的不变性
  10. One Coder 发表 2014-01-15 13:20:49 ZeroMQ 初学 Java Binding验证代码
  11. 炒饭 发表 2015-05-20 02:58:24 在Java中使用AnimatedGifEncoder生成GIF动画
  12. 博主 发表 2017-03-16 23:36:00 java 世界中的migration 工具

发表评论