如何使用Objects類簡單重寫equals方法

2021-10-10 17:52:47 字數 1260 閱讀 1357

equals()和hashcode()都是object類中的方法。

equals方法用於比較兩個物件是否相同;

hashcode方法是根據物件的位址或者字串或者數字計算該物件的雜湊值

object類中的equals方法比較的是兩個物件的引用位址,只有物件的引用位址指向同乙個位址時,才認為這兩個物件相等,否則認為不相等。

如果有兩個物件,我們需要判斷其屬性是否相等,那麼預設的equals方法就不符合我們的要求了,這個時候我們就需要對equals方法進行重寫以滿足我們的需求。

為了維護hashcode()方法的equals協議

如果根據equals()方法,兩個物件是相等的,那麼對這兩個物件的每個物件呼叫hashcode()方法都必須生成相同的整數結果;而兩個hashcode()返回的結果相等時,兩個物件的equals()方法不一定相等。

首先我們先準備兩個學生類,該類的屬性有:學號,姓名,性別,年齡,專業。

**如下:

public

class

student

在這裡,我們認為兩個學生的學號和姓名同時相等時則認為兩個學生相等。

首先,我們使用eclipse自動生成equals方法:

@override

public

boolean

equals

(object obj)

elseif(

!name.

equals

(other.name)

)return

false;if

(sno == null)

elseif(

!sno.

equals

(other.sno)

)return

false

;return

true

;}

可以看出這段**是很繁瑣的。

我們分析一下這段**,可以發現其有許多對空的判斷,這些判斷導致了**的繁瑣。而objects類裡提供了空指標安全的物件比較,於是上面的**就可以減少許多**量。

@override

public

boolean

equals

(object obj)

這樣,對於物件屬性的比較就少了許多的**量。

LayoutInflater類簡單使用

layoutinflater 是乙個抽象類,在文件中如下宣告 public abstract class layoutinflater extends object 獲得 layoutinflater 例項的三種方式 1.layoutinflater inflater getlayoutinflat...

Qt MessageBox類簡單使用

qmessagebox類提供了乙個有一條簡短訊息 乙個圖示和一些按鈕的模式對話方塊。訊息框用於提供情報資訊並且問一些簡單的問題。qmessagebox提供了乙個不同資訊的範圍,大致按兩個軸進行排列 嚴重程度和複雜程度。按嚴重程度分 訊息 警告 錯誤。按複雜程度分為乙個按鈕 確定 的簡單訊息 或者用於...

File類簡單使用

file string pathname 根據乙個路徑得到file物件 file string parent,string child 根據乙個目錄和乙個子檔案 目錄得到file物件 file file parent,string child 根據乙個父file物件和乙個子檔案 目錄得到file物件...