原创

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),专注Java技术干货分享!让你从此路人变大神!回复关键词领取资料:如Mysql、Hadoop、Dubbo、Spring Boot等,免费领取视频教程、资料文档和项目源码。微信搜索小程序“Java精选面试题”,内涵3000+道Java面试题!

涵盖:互联网那些事、算法与数据结构、SpringMVC、Spring boot、Spring Cloud、ElasticSearch、Linux、Mysql、Oracle等

评论

分享:

支付宝

微信