重寫equals方法和hashcode方法

2022-06-25 21:36:10 字數 675 閱讀 2554

public class person 

// instanceof 已經處理了obj = null的情況

if (!(obj instanceof person))

person perobj = (person) obj;

return perobj.age == age && perobj.name.equals(name);

}//重寫hashcode

@override

public int hashcode()

public string getname()

public void setname(string name)

public int getage()

public void setage(int age)

}

引出下面兩個面試題

hashcode是用於雜湊資料的快速訪問,(如利用hashset/hashmap/hashtable類來儲存資料時,都是根據儲存物件的hashcode值來進行判斷是否相同的。)使用hashcode()方法獲取物件的雜湊碼來計算物件儲存位置的。如果不重寫hashcode()方法兩個內容相同的物件會計算出不一樣的hash碼。在儲存雜湊集合時(如set類),將會儲存了兩個值一樣的物件,導致混淆。因此,就也需要重寫hashcode()方法

重寫equals方法

對於重寫equals方法有以下例子 object類中的常用方法。object類是所有類的根類,定義了所有物件都具備的功能。api 應用程式介面 文件 class person extends object 判斷是否是同齡人。這個方法也是在比較兩個person物件是否相等。注意 person類中是否有...

equals方法重寫

來自的文章 一 為什麼equals 方法要重寫?判斷兩個物件在邏輯上是否相等,如根據類的成員變數來判斷兩個類的例項是否相等,而繼承object中的equals方法只能判斷兩個引用變數是否是同乙個物件。這樣我們往往需要重寫equals 方法。我們向乙個沒有重複物件的集合中新增元素時,集合中存放的往往是...

重寫equals方法

object物件中的 public boolean equals object obj 指示其他某個物件是否與此物件 相等 這裡的相等指的是比較的兩方指向同乙個物件 對於任何非空引用值 x 和 y,當且僅當 x 和 y 引用同乙個物件 就是同一塊記憶體位址 此方法才返回 true 但是這一性質並不符...