重写java类的equals()和hashCode方法
2021-04-26 01:27
阅读:899
Person{ private int id; private String name; private String sex; 省略get set @Override public boolean equals(Object o) { //自反性 if (this == o) return true; //对象为空,则不往下走了 if (o == null) return false ; //任何对象不等于null,比较是否为同一类型 if (!(o instanceof Person)) return false; //强制类型转换 Person person = (Person) o; //比较属性值 return getId() == person.getId() && Objects.equals(getName(), person.getName()) && Objects.equals(getSex(), person.getSex()); } @Override public int hashCode() { int result = name.hashCode(); result = 17 * result + sex.hashCode(); result = 17 * result + id.hashCode(); return result; } }
五、hashcode里的代码该怎么理解?该如何写?
其实有个相对固定的写法,先整理出你判断对象相等的属性,然后取一个尽可能小的正整数(尽可能小时怕最终得到的结果超出了整型int的取数范围),这里我取了17,(好像在JDK源码中哪里看过用的是17),然后计算17*属性的hashcode+其他属性的hashcode,重复步骤
上一篇:冒泡排序
下一篇:python虚拟环境
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:重写java类的equals()和hashCode方法
文章链接:http://soscw.com/index.php/essay/79600.html
文章标题:重写java类的equals()和hashCode方法
文章链接:http://soscw.com/index.php/essay/79600.html
评论
亲,登录后才可以留言!