equals ,hashCode 重寫步驟的詳解

2021-08-09 00:02:44 字數 1025 閱讀 7326

// 系統自動生成的物件的唯一編號

// 1. equals 相等的兩個物件,hashcode 必須保持一致

// 系統為了提高效率,hashset 等, 判斷兩個物件相等的時候,會先比較hashcode

// 如果一致,呼叫equals 進行比較,如果不一致,就認為不相同,就不再呼叫equals 方法了(equals 方法比較複雜)

// 重寫equals 方法必須重寫hashcode ,保證值相等物件,hashcode 也相等。

// // 2. hashcode 相等的 equals 不一定相等

「` @override

public int hashcode()

@override

public boolean equals(object obj) else if (!name.equals(other.name)) // 取反,不相等的時候返回false

return false;

return true;

} // hashset 相同的元素只會新增乙個,靠的是hashcode 和equals 方法

// 引用型別 == 比較的是位址,equals 預設比較的也是位址

// 可以重寫equals 方法實現值的比較,比如:string

// 重寫 equals 必須重寫 hashcode,兩者保持一致

// equals 相等,hashcode 相等,equals 不相等,hashcode 也不相等

// 重寫equals 方法和 hashcode方法後,contains 比較的是值

system.out.println(list.contains(p2)); // true

// 重寫equals 方法和 hashcode方法後,indexof進行比較,是值的比較。contains 其實就是return indexof(o) >= 0;

// 找到就返回對應的索引,找不到就返回 -1;

system.out.println(list.indexof(p2)); // 0

Equals HashCode 演算法解析

關於equals和hashcode的講解已經有很多文章了 但我覺得大都空泛,套用,不能使人看了能懂,我決定結合自己的理解,畫乙個樣圖,說明下hashcode的原理和演算法,希望能幫助大家對這個煩人的理論有個真正的理解。0 1 201 2567 1011 12上面這 表示通過hash演算法後,資料的分...

equals ,hashCode 的區別和聯絡

今天突然想起 和equals的問題,然後又想起之前面試的時候曾經被問equals和hashcode 的區別,正好整理一下。1.首先討論 問題 看一組比較,包括基本型別和其包裝類,引用型別之間的比較 string str1 new string hello string str2 new string...

重發布 重分布 重分發

asbr同時工作於不同的路由協議中,然後通過各種的方式學習條目,然後在進行共享 1,必須存在asbr 自治系統邊界路由器 協議邊界路由器 2,需要考慮種子度量 規則 1 a協議發布到b協議,在asbr上的b協議中配置 2 將a協議發布到b協議,是將asbr上通過a協議學習,及本地工作於a的直連全部發...