成人免费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代碼開發者

2020-04-17 14:25:22

Kubernetes應用程序軟件開發

2014-04-17 16:42:03

DevOps

2022-07-26 00:00:22

HTAP系統數據庫

2016-06-01 15:42:58

Hadoop數據管理分布式

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-10-15 10:27:42

變量命名

2014-11-28 10:31:07

Hybrid APP
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品成人国产乱一区 | av日韩在线播放 | 国产一区二区三区在线 | 亚洲午夜精品 | 99视频在线免费观看 | 色婷综合网 | 久久一区二 | 免费看一级毛片 | 精品欧美在线观看 | 午夜精品一区二区三区免费视频 | 欧美综合一区二区 | 中文二区 | 天天爱av | 麻豆久久久久久 | 81精品国产乱码久久久久久 | 日韩欧美一区在线 | 日韩国产精品一区二区三区 | 国产午夜亚洲精品不卡 | 日本成人中文字幕在线观看 | 在线一区二区三区 | 免费午夜电影 | 国产精品高清一区二区 | 亚洲精品一区二区另类图片 | 911精品国产 | 91在线视频免费观看 | 久久精品国产免费 | 欧美日韩在线免费 | 欧美久久久久久久 | 黄久久久 | 国产精品欧美精品 | 精品国产高清一区二区三区 | 久久久成人免费一区二区 | 中文字幕不卡视频在线观看 | 色综合久久88色综合天天 | 日韩三级电影在线看 | 国产欧美一区二区三区久久手机版 | 97精品视频在线 | 久操伊人 | 久久高清 | 亚洲成人免费视频在线观看 | 精品久久久久久久人人人人传媒 |