成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java雜談——你真的會重寫Equals方法嗎

開發 后端
在hashMap里面的put方法中,先根據hashcode找到對應下標。如果該下標對應的列表已經存在數據,則對列表進行逐個遍歷,遍歷的時候使用equals判斷是否是相同對象。如果找到相同對象則進行更新操作,找不到則進行插入操作。

[[410872]]

 什么是equals方法

Java中用equals方法來判斷兩個對象是不是相等,equals方法是Object類就擁有的方法,因此所有類都擁有該方法,使用方式很簡單:a.equals(b) ,返回true或false。

Object中的equals方法的源碼

  1. public boolean equals(Object obj) { 
  2.     return (this == obj); 

為什么需要重寫equals方法

從object處的繼承來了equals僅僅判斷了2個對象的內存地址是否一樣,這樣的代碼,沒辦法滿足大部分的情況,因此新建的類如果需要使用equals方法就需要重寫equals方法。

重寫equals方法需要遵守的規范

1、自反性:對于任何非空引用x,x.equals(x)應該返回true。

2、對稱性:對于任何引用x和y,如果x.equals(y)返回true,那么y.equals(x)也應該返回true。

3、傳遞性:對于任何引用x、y和z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也應該返回true。

4、一致性:如果x和y引用的對象沒有發生變化,那么反復調用x.equals(y)應該返回同樣的結果。

5、非空性:對于任意非空引用x,x.equals(null)應該返回false。

equals和hashCode

每個覆蓋了equals方法的類中,必須覆蓋hashCode。如果不這么做,就違背了hashCode的通用約定。

equals和hashCode都是用來判斷兩個對象是否相等,區別是:

  • equals - 保證比較對象是否是絕對相等的
  • hashCode - 保證在最快的時間內判斷兩個對象是否相等,可能有誤差值

在hashMap里面的put方法中,先根據hashcode找到對應下標。如果該下標對應的列表已經存在數據,則對列表進行逐個遍歷,遍歷的時候使用equals判斷是否是相同對象。如果找到相同對象則進行更新操作,找不到則進行插入操作。

假設現在存在2個equals為true,但是hashCode不一樣的key往同一個hashMap里面添加,因為hashCode不一樣,導致他們計算出來的下標大概率是不一樣的(不一樣的概率大于93%)。我們繼續假設他們的下標計算出來不一樣,那么當第二個key存入的時候,因為檢測的是另外一個列表,就無法發現第一個key的存在,因此會執行插入操作。

這樣引發的問題就是在同一個hashMap中,同一個key(equals一樣),但是存在兩條數據。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2022-03-25 09:39:50

LinuxLinux top

2021-03-18 23:38:26

EqualsHashcode方法

2021-07-30 09:32:55

JavaEquals

2021-12-09 17:21:48

TypeScript TS 前端

2017-11-13 14:06:56

2019-01-22 15:37:01

GitHub代碼開發者

2016-06-01 15:42:58

Hadoop數據管理分布式

2020-04-17 14:25:22

Kubernetes應用程序軟件開發

2022-07-26 00:00:22

HTAP系統數據庫

2014-04-17 16:42:03

DevOps

2023-03-01 09:39:05

2017-10-10 11:11:14

2024-04-23 08:31:57

pythonfalse

2020-06-04 14:15:55

Java中BigDecimal函數

2018-09-29 15:34:34

JavaList接口

2018-11-20 09:37:19

Java內存模型

2023-11-01 13:48:00

反射java

2023-05-10 11:07:18

2021-01-15 07:44:21

SQL注入攻擊黑客

2021-11-09 09:48:13

Logging python模塊
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91久久精品国产免费一区 | 国产japanhdxxxx麻豆 | 久久国 | 成人免费观看视频 | 中文字幕日韩av | 午夜影院视频在线观看 | 一级做a爰片性色毛片视频停止 | 久久在线视频 | 色视频成人在线观看免 | 黄色在线观看国产 | 色婷婷狠狠 | 精品蜜桃一区二区三区 | 欧美精品在线免费观看 | 亚洲网站在线观看 | 高清国产一区二区 | 91www在线观看 | 中文字幕亚洲免费 | 午夜在线视频 | 粉嫩国产精品一区二区在线观看 | 亚洲精品9999久久久久 | 国产精品久久久久aaaa九色 | 高清人人天天夜夜曰狠狠狠狠 | 羞羞网站免费观看 | 亚洲天堂999| 亚洲人成在线播放 | 国产资源在线观看 | 一区二区三区四区国产精品 | 日韩在线免费 | 亚洲一区二区视频在线观看 | 日韩一区二区在线视频 | 亚洲一区三区在线观看 | 91av视频在线 | 欧美成人一区二区三区 | www.日本精品 | 欧美日韩午夜精品 | 日韩成人在线观看 | 久久久成人一区二区免费影院 | 国产剧情一区二区三区 | 亚洲一区二区三区四区五区午夜 | 色在线免费视频 | 久久免费精品视频 |