地球人都知道,equals方法需要滿足自反,對稱,傳遞,一致,非空特性,如果我們需要在**中改寫equals方法,怎麼樣才能保證這幾個特性呢?
(1)使用==操作符來檢查實參是都指向當前物件的乙個物件
(2)使用instanceof操作符檢查實參是都為正確型別
(3)將實參轉換成正確物件
(4)根據業務需求判斷當前物件與實參物件是否相等
(5)最後,必須進行檢查傳遞,一致和對稱
如果滿足了以上5點,基本上可以算是成功改寫equals方法,當然還必須同時改寫hascode方法
boolean
equals( object obj )
...if( target.getid()
!=null
&&target.getid().length()
>0)
...return
equalsbuilder.reflectionequals(
this
, obj);
改寫後的hashcode方法(使用common-lang)
原理:如果id屬性不為空,則直接使用id的hashcode,如果為空,則使用這個物件的所有屬性來生成雜湊值
public
inthashcode()
...return
hashcodebuilder.reflectionhashcode(
this
);
怎樣正確建立MySQL索引的方法詳解
索引類似大學圖書館建書目索引,可以提高資料檢索的效率,降低資料庫的io成本。mysql在300萬條記錄左右效能開始逐漸下降,雖然官方文件說500 800w記錄,所以大資料量建立索引是非常有必要的。mysql提供了explain,用於顯示sql執行的詳細資訊,可以進行索引的優化。什麼是索引?mysql...
重寫equals方法
對於重寫equals方法有以下例子 object類中的常用方法。object類是所有類的根類,定義了所有物件都具備的功能。api 應用程式介面 文件 class person extends object 判斷是否是同齡人。這個方法也是在比較兩個person物件是否相等。注意 person類中是否有...
equals方法重寫
來自的文章 一 為什麼equals 方法要重寫?判斷兩個物件在邏輯上是否相等,如根據類的成員變數來判斷兩個類的例項是否相等,而繼承object中的equals方法只能判斷兩個引用變數是否是同乙個物件。這樣我們往往需要重寫equals 方法。我們向乙個沒有重複物件的集合中新增元素時,集合中存放的往往是...