最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

解決idea默認(rèn)帶的equals和hashcode引起的bug

 更新時(shí)間:2021年07月27日 11:25:21   作者:thisisnew  
這篇文章主要介紹了解決idea默認(rèn)帶的equals和hashcode引起的bug,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

idea默認(rèn)帶的equals和hashcode引起的bug

最近因規(guī)范需要,統(tǒng)一使用idea,使用的版本為2017.4.

建立一個(gè)實(shí)體類,在添加的時(shí)候,使用idea的快捷鍵自動(dòng)生成了equals和hashcode方法.

選擇2個(gè)屬性進(jìn)行生成

然后往list中添加,結(jié)果一直出現(xiàn)重復(fù)記錄,調(diào)試半天發(fā)現(xiàn)

if(!super.equals(o)) return false;這一句是進(jìn)行引用比較,如果同一個(gè)類,直接返回,導(dǎo)致出現(xiàn)問題。

按理說我選擇屬性進(jìn)行比對(duì),肯定是不可能是相同引用了,所以2017.3.4分版本的自動(dòng)生成equals和hashcode請(qǐng)慎

正確的應(yīng)該如下

關(guān)于equals和hashcode問題

默認(rèn)情況下也就是從超類Object繼承而來的equals方法與‘=='是完全等價(jià)的,比較的都是對(duì)象的內(nèi)存地址,但我們可以重寫equals方法,使其按照我們的需求的方式進(jìn)行比較,如String類重寫了equals方法,使其比較的是字符的序列,而不再是內(nèi)存地址。

hashcode是用于散列數(shù)據(jù)的快速存取,如利用HashSet/HashMap/Hashtable類來存儲(chǔ)數(shù)據(jù)時(shí),都是根據(jù)存儲(chǔ)對(duì)象的hashcode值來進(jìn)行判斷是否相同的。

這樣如果我們對(duì)一個(gè)對(duì)象重寫了euqals,意思是只要對(duì)象的成員變量值都相等那么euqals就等于true,但不重hashcode,那么我們?cè)賜ew一個(gè)新的對(duì)象,當(dāng)原對(duì)象.equals(新對(duì)象)等于true時(shí),兩者的hashcode卻是不一樣的,由此將產(chǎn)生了理解的不一致,如在存儲(chǔ)散列集合時(shí)(如Set類),將會(huì)存儲(chǔ)了兩個(gè)值一樣的對(duì)象。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

福泉市| 广宗县| 微山县| 青海省| 山东省| 浪卡子县| 丹巴县| 武山县| 横峰县| 新丰县| 米林县| 邵武市| 德阳市| 伊金霍洛旗| 洮南市| 桦川县| 深水埗区| 永泰县| 北碚区| 诸暨市| 梓潼县| 黄石市| 嵊泗县| 茌平县| 营口市| 香格里拉县| 建德市| 仙游县| 临湘市| 清丰县| 巴南区| 丹阳市| 交城县| 鹿泉市| 永济市| 荃湾区| 博罗县| 合川市| 平陆县| 威海市| 济阳县|