关于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ì)象。
轉(zhuǎn)載于:https://www.cnblogs.com/zhangjianbing/p/9875962.html
總結(jié)
以上是生活随笔為你收集整理的关于equals和hashcode问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 相比传统游戏,区块链游戏的价值在哪里?
- 下一篇: CentOS 7 NAT软路由