Hashcode()方法的重写模板

对于初学Java的小白们来说HashCode和equals方法重写是必须要掌握的,对于大量们来说一般的都是利用集成开发工具快捷生成,小编利用的是Eclipse,快捷生成按Alt+Shfit+S在勾选相应的选项即可!

代码模板

package com.jre.java.se;
import java.util.HashSet;
import java.util.Set;
/*hashCode重写基本原则和模板
    对于自己设计的类如果重写了equals就必须同时重写hashCode 
    对于相同的对象的hashCode的返回值要相等
    在集成开发工具中他们都是可以快捷生成的
 */
public class HashCodetest {

	 public static void main(String [] agrs) {
		 
		 Set<Student>set=new HashSet<>();
		 Student a=new Student(1,"jack");
		 Student b=new Student(1,"jack");
		 set.add(a);
		 set.add(b);
		 for(Student o:set) {
			 System.out.println(o);
		 }
			/*重写hashCod()方法之前
			  System.out.println(a.hashCode());//1617791695
			  System.out.println(b.hashCode());//125993742
			 */
		    //重写之后
		  System.out.println(a.hashCode());//3254659
		  System.out.println(b.hashCode());//3254659
		 
		 	 
	 }
}
class Student{
	int id;
	String name;
	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + "]";
	}
	public Student(int id, String name) {
		super();
		this.id = id;
		this.name = name;
	}
	//重写HashCode()方法
	public int hashCode() {
		final int prime =20;//定义一个定值
		int result =1;//定义返回值初始值自己定
		result=prime*result+id;//将对象的int类型属性值直接给返回值
		result=prime*result+((null==name)?0:name.hashCode());
		//如果对象的String类型属性是null给值0如果不是先调用String类的hashCode算法得到哈希值在把值给返回值
		return result;
	}
}

对于小白们可以自己敲一敲代码,不要开始就一键生成,可以先理解理解

经验分享 程序员 微信小程序 职场和发展