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; } }
对于小白们可以自己敲一敲代码,不要开始就一键生成,可以先理解理解
上一篇:
IDEA上Java项目控制台中文乱码