原创

Java中equal()函数与hashcode()函数使用分析

java中Object对象重写equal()函数与hashcode()函数,先要明白equal()函数对于任何非空引用值仅当两个值引用同一个对象时此方法才返回true,此处不解释如果不明白可以在本网站搜索equal与==的区别。重写时必须保证hashcode()函数的常规规范,该规范声明相等对象必须具有相同的哈希码。

如何实现hashcode哈希码相等,具体代码如下:

1)当obj1.equals(obj2)为true时,obj1.hashCode() == obj2.hashCode()必须为true 

2)当obj1.hashCode() == obj2.hashCode()为false时,obj1.equals(obj2)必须为false

代码演示,具体代码如下:

package com.yoodb;

public class Number {
	private String a;

	public String getA() {
		return a;
	}

	public void setA(String a) {
		this.a = a;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((a == null) ? 0 : a.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Number other = (Number) obj;
		if (a == null) {
			if (other.a != null)
				return false;
		} else if (!a.equals(other.a))
			return false;
		return true;
	}

	public Number(String a) {
		super();
		this.a = a;
	}
	
}

总结:

hashcode()函数是用于散列数据的快速存取,如利用HashSet/HashMap/Hashtable类来存储数据时,都是根据存储对象的hashcode值来进行判断是否相同的。

~阅读全文~人机检测~

关注下方微信公众号“Java精选”(w_z90110),回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。

Java精选专注程序员推送一些Java开发知识,包括基础知识、各大流行框架(Mybatis、Spring、Spring Boot等)、大数据技术(Storm、Hadoop、MapReduce、Spark等)、数据库(Mysql、Oracle、NoSQL等)、算法与数据结构、面试专题、面试技巧经验、职业规划以及优质开源项目等。其中一部分由小编总结整理,另一部分来源于网络上优质资源,希望对大家的学习和工作有所帮助。

评论

分享:

支付宝

微信