hashCode()方法(覆盖hashCode()方法)
import java.util.*;
import java.lang.Comparable;
/**
?* @desc 比較equals() 返回true 以及 返回false時, hashCode()的值。
?*
?* @author skywang
?* @emai kuiwu-wang@163.com
?*/
public class ConflictHashCodeTest2{
????public static void main(String[] args) {
????????// 新建Person對象,
????????Person p1 = new Person("eee", 100);
????????Person p2 = new Person("eee", 100);
????????Person p3 = new Person("aaa", 200);
????????Person p4 = new Person("EEE", 100);
????????// 新建HashSet對象
????????HashSet set = new HashSet();
????????set.add(p1);
????????set.add(p2);
????????set.add(p3);
????????// 比較p1 和 p2, 并打印它們的hashCode()
????????System.out.printf("p1.equals(p2) : %s; p1(%d) p2(%d)\n", p1.equals(p2), p1.hashCode(), p2.hashCode());
????????// 比較p1 和 p4, 并打印它們的hashCode()
????????System.out.printf("p1.equals(p4) : %s; p1(%d) p4(%d)\n", p1.equals(p4), p1.hashCode(), p4.hashCode());
????????// 打印set
????????System.out.printf("set:%s\n", set);
????}
????/**
?????* @desc Person類。
?????*/
????private static class Person {
????????int age;
????????String name;
????????public Person(String name, int age) {
????????????this.name = name;
????????????this.age = age;
????????}
????????public String toString() {
????????????return name + " - " +age;
????????}
????????/**
?????????* @desc重寫hashCode
?????????*/ ?
????????@Override
????????public int hashCode(){ ?
????????????int nameHash = ?name.toUpperCase().hashCode();
????????????return nameHash ^ age;
????????}
????????/**
?????????* @desc 覆蓋equals方法
?????????*/ ?
????????@Override
????????public boolean equals(Object obj){ ?
????????????if(obj == null){ ?
????????????????return false; ?
????????????} ?
????????????//如果是同一個對象返回true,反之返回false ?
????????????if(this == obj){ ?
????????????????return true; ?
????????????} ?
????????????//判斷是否類型相同 ?
????????????if(this.getClass() != obj.getClass()){ ?
????????????????return false; ?
????????????} ?
????????????Person person = (Person)obj; ?
????????????return name.equals(person.name) && age==person.age; ?
????????}
????}
}
結果:
p1.equals(p2) : true; p1(68545) p2(68545)
p1.equals(p4) : false; p1(68545) p4(68545)
set:[aaa - 200, eee - 100]
轉載于:https://www.cnblogs.com/chengshixiaonongming/p/10410571.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的hashCode()方法(覆盖hashCode()方法)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关闭或开启memory_target
- 下一篇: MongoDB基础命令