第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

hashcode方法有什么用?

hashcode方法有什么用?

查看完整描述

1 回答

?
mark_fork

TA貢獻(xiàn)11條經(jīng)驗(yàn) 獲得超10個(gè)贊

你好,糾正一下是hashCode()。

【什么是hash】

首先,需要明白hash是什么,hash是用來快速定位元素的一種數(shù)據(jù)結(jié)構(gòu),如給定一個(gè)變量我們可以通過hash 確定這個(gè)變量在內(nèi)存中的位置 即 變量a 經(jīng)過 hash(a)->就可以確定這個(gè)元素在內(nèi)存中的位置。

下面是比較重要的信息:

【hashCode 方法的作用】

  1. object基類 中 有hashcode(),這就導(dǎo)致了所有我們自建的類都繼承了hashcode 方法。

  2. hashcode在單一類當(dāng)中只是一個(gè)實(shí)例方法并沒有什么大的作用。


[hashcode 應(yīng)用]

? ?在Java集合類當(dāng)中有實(shí)現(xiàn)map接口的HashMap、Set接口的HashSet 要知道set集合中存儲(chǔ)的對(duì)象的引用所指向的對(duì)象是不能重復(fù)的,比如你要實(shí)現(xiàn) Set<Student> students[] = new HashSet<>();那么?Student 這個(gè)類中必須override(重寫)hashCode()與equals(), 如果不重寫hashCode,只重寫equals(),那么當(dāng)你Student a = new Student("張曉",13);Student b = new Student("張曉",13); 這兩個(gè)對(duì)象的引用都能被存儲(chǔ)至hashset 集合當(dāng)中,但其實(shí)我們?nèi)庋塾^察到的對(duì)象已經(jīng)重復(fù)了,這就是因?yàn)閔ashcode沒有重寫,兩個(gè)對(duì)象的hash code不一致導(dǎo)致的肉眼觀察到的相同內(nèi)容的對(duì)象被存儲(chǔ)至了set集合當(dāng)中。


所以總結(jié):

  1. 多個(gè) 單一類對(duì)象實(shí)例中,如果兩個(gè)對(duì)象的hashCode() 相同 ,那么兩個(gè)對(duì)象equals()? 一定相同 因?yàn)槭峭粋€(gè)對(duì)象,但equals相同 hashCode()不一定相同

  2. 在HashTable、HashSet、HashMap 集合中存儲(chǔ)的對(duì)象,hashCode 與 equals 結(jié)合來確保元素的肉眼可見的非重復(fù)性。


查看完整回答
反對(duì) 回復(fù) 2018-03-16
  • 1 回答
  • 0 關(guān)注
  • 1057 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)