博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
重写 hashCode 方法
阅读量:4051 次
发布时间:2019-05-25

本文共 1360 字,大约阅读时间需要 4 分钟。

-- Start

equals 和 hashCode 的定义必须一致, 如果 x.equals(y) == true, 那么 x.hashCode 与 y.hashCode 必须返回相同的值, 所以如果重写了 equals 方法, 那么我们必须重写 hashCode 方法.

class Poeple {	private String name;	private int age;	@Override	public boolean equals(Object otherObject) {		if (this == otherObject)			return true;		if (otherObject == null)			return false;		if (getClass() != otherObject.getClass()) // 注意此处, 我们不能通过 instanceof 来判断			return false;		Poeple other = (Poeple) otherObject;		return name.equals(other.name) // 使用 equals 对象域				&& age == other.age; // 使用 == 比较基本类型	}	@Override	public int hashCode() {		return 17 * name.hashCode() + 31 * age; // 计算所有用于equals方法的域	}	public String getName() {		return name;	}	public void setName(String name) {		this.name = name;	}	public int getAge() {		return age;	}	public void setAge(int age) {		this.age = age;	}}class Student extends Poeple {	private int grade;	@Override	public boolean equals(Object otherObject) {		if (!super.equals(otherObject)) // 此处需要调用父类的 equals 方法			return false;		Student other = (Student) otherObject;		return grade == other.grade;	}	@Override	public int hashCode() {		return super.hashCode() + 37 * grade; // 此处需要调用父类的 hashCode 方法	}}

虽然实现 HashCode 方法比较简单, 不过 Apache Commons 包中提供了 HashCodeBuilder 类, 它可以帮助我们实现 HashCode 方法.

--更多参见:

-- 声 明:转载请注明出处
-- Last Updated on 2012-05-18
-- Written by ShangBo on 2012-05-18
-- End

你可能感兴趣的文章
DataWindow.net中如何实现鼠标划过时变颜色
查看>>
Datawindow.net中设置字符串的显示,超过长度部分显示为。。。
查看>>
PowerBuilder中使用带返回的powerobjectparm
查看>>
从oracle表中随机取记录,产生随机数和随机字符串
查看>>
功夫熊猫,中国式的哲学和西方式的搞笑
查看>>
Oracle SYS口令深入解析
查看>>
XP中IIS“http500”错误的终极解决方法
查看>>
李开复眼中的兰迪教授:引领你的一生
查看>>
早起的虫儿被鸟吃?
查看>>
Love Your Life》—— 热爱生活
查看>>
一个高速交警的忠告
查看>>
新车装饰的中国特色
查看>>
没看过这么NB的自驾游,笑的我眼泪都出来了
查看>>
李涯的哭
查看>>
和机器学习和计算机视觉相关的数学
查看>>
论文MICO for MRI bias field estimation and tissue segmentation品讲
查看>>
后现代
查看>>
VMware6关机后出现is not a valid virtual machine configuration file的解决办法
查看>>
通过ASP实现flash对数据库的访问
查看>>
“==”和equals方法究竟有什么区别?
查看>>