天天看點

重寫equals 和HashCode

在自定義的一個資料類中 重寫equals和HashCode以防止重複輸入相同資料

public class Department {

    String depCode;

    public int hashCode()

    {

    //    System.out.println("————————執行了Department.hashCode()——————");

        return  7*depCode.hashCode();

    }

    //一個判斷對象是否相等的equals

    public boolean equals(Object Department)

    {

    //    System.out.println("----------執行了Department.equals()--------");

        //  一個快速測試,看看對象是相同的

        if (this==Department) return true;

        // 如果顯示的參數是空的時候 則必須傳回錯誤

        if(Department==null) return false;

        // 如果類型不比對 則不可能相等  getclass 将傳回對象所屬的類

        if(getClass()!=Department.getClass())

            return false;

        // 現在我們知道Department 是一個非空的部門了

        Department other =(Department)Department;

        //測試是否有相同的值的字段

        return depCode.equals(other.depCode);

                //&& depName.equals(other.depName);

    }

}

然後在另一個類中向Department中put資料的時候  會自動調用HashCode 如果HashCode為true ,則調用equals繼續判斷是否有相同的,若equals也為true 則說明put的資料相同 則不加入。