辽宁工程建设信息网网站,网站备案包括哪些,怎么做音乐mp3下载网站,seo关键词排名优equals与hashCode 在Java中#xff0c;重写 equals() 方法时#xff0c;通常也需要重写 hashCode() 方法#xff0c;这是因为在Java中#xff0c;如果两个对象相等#xff08;即 equals() 方法返回true#xff09;#xff0c;它们的哈希码应该相等#xff0c;即 hashCo… equals与hashCode 在Java中重写 equals() 方法时通常也需要重写 hashCode() 方法这是因为在Java中如果两个对象相等即 equals() 方法返回true它们的哈希码应该相等即 hashCode() 方法返回的哈希码应该一致。这是为了保证当两个对象放入基于哈希码的集合中如HashMap、HashSet时当集合要添加新的对象时先调用这个对象的hashCode方法得到对应的hashCode值会跟之前存在对象的hashCode进行比对从而能使它们被正常识别和存储同时也提高了效率。 通用原则equals相同的两个对象hashcode必须相同 代码示例如下
import java.util.Objects;class Person {private String name;private int age;public Person(String name, int age) {this.name name;this.age age;}Overridepublic boolean equals(Object obj) {if (this obj) {return true;}if (obj null || getClass() ! obj.getClass()) {return false;}Person person (Person) obj;return age person.age Objects.equals(name, person.name);}Overridepublic int hashCode() {return Objects.hash(name, age);}
}public class EqualsAndHashCodeExample {public static void main(String[] args) {Person person1 new Person(Alice, 30);Person person2 new Person(Alice, 30);System.out.println(person1.equals(person2): person1.equals(person2));System.out.println(person1.hashCode(): person1.hashCode());System.out.println(person2.hashCode(): person2.hashCode());}
}在上面的代码中我们重写了 equals() 方法来比较两个 Person 对象的 name 和 age 字段是否相等同时重写了 hashCode() 方法来生成哈希码。在 main 方法中我们创建了两个 Person 对象 person1 和 person2 它们的 name 和 age 字段相等。通过调用 equals() 方法比较它们的相等性并打印出哈希码的值可以看到因为重写了 hashCode() 方法 person1 和 person2 的哈希码是相等的。 上一篇 Java常见的判空方式汇总 欢迎点赞、收藏、评论 下一篇 Java——原码、反码、补码、位运算。