您好,欢迎来到飒榕旅游知识分享网。
搜索
您的当前位置:首页hashCode和equals作用与关系

hashCode和equals作用与关系

来源:飒榕旅游知识分享网

hashCode和equals作用

hashCode和equals作用实际上差不多,都是用来比较两个对象是否相同。但是equals比较更加全面准确,所以比较复杂,这样效率很低,所以我们还要使用hashCode生成一个值,如果值不同则认为两个对象不同,这样可以提高效率。当hashCode与equals都判断相同时,我们认为这两个对象是重复对象。

hashCode和equals关系

这里通过代码来了解hashCode和equals的关系

public class Worker {
	String name;
	int salary;

	public Worker(String name, int salary) {
		super();
		this.name = name;
		this.salary = salary;
	}

	@Override
	public String toString() {
		return "Worker [name=" + name + ", salary=" + salary + "]";
	}

	@Override
	public int hashCode() {
		System.out.println("hashCode");
		return salary;
	}

	@Override
	public boolean equals(Object obj) {
		System.out.println("equals");
		Worker w = (Worker) obj;
		return name.equals(w.name);
	}

	public static void main(String[] args) {
		HashSet<Worker> set = new HashSet<>();
		Worker w1 = new Worker("张三", 5000);
		Worker w2 = new Worker("张三", 6000);
		Worker w3 = new Worker("张三", 5000);
		Worker w4 = new Worker("李四", 5000);
		set.add(w1);
		set.add(w2);
		set.add(w3);
		set.add(w4);

		Iterator<Worker> iterator = set.iterator();
		while (iterator.hasNext()) {
			System.out.println(iterator.next());
		}
	}
}

运行结果:

结论:

当hashCode判断相同时,equals判断未必相同
当equals判断相同时,hashCode判断一定相同

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务