亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

hashcode方法有什么用?

hashcode方法有什么用?

慕田峪是誰我也不認識 2018-03-16 18:47:38
查看完整描述

1 回答

?
mark_fork

TA貢獻11條經驗 獲得超10個贊

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

【什么是hash】

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

下面是比較重要的信息:

【hashCode 方法的作用】

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

  2. hashcode在單一類當中只是一個實例方法并沒有什么大的作用。


[hashcode 應用]

? ?在Java集合類當中有實現map接口的HashMap、Set接口的HashSet 要知道set集合中存儲的對象的引用所指向的對象是不能重復的,比如你要實現 Set<Student> students[] = new HashSet<>();那么?Student 這個類中必須override(重寫)hashCode()與equals(), 如果不重寫hashCode,只重寫equals(),那么當你Student a = new Student("張曉",13);Student b = new Student("張曉",13); 這兩個對象的引用都能被存儲至hashset 集合當中,但其實我們肉眼觀察到的對象已經重復了,這就是因為hashcode沒有重寫,兩個對象的hash code不一致導致的肉眼觀察到的相同內容的對象被存儲至了set集合當中。


所以總結:

  1. 多個 單一類對象實例中,如果兩個對象的hashCode() 相同 ,那么兩個對象equals()? 一定相同 因為是同一個對象,但equals相同 hashCode()不一定相同

  2. 在HashTable、HashSet、HashMap 集合中存儲的對象,hashCode 與 equals 結合來確保元素的肉眼可見的非重復性。


查看完整回答
反對 回復 2018-03-16
  • 1 回答
  • 0 關注
  • 1059 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號