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

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

Java中hashCode的用途是什么?

Java中hashCode的用途是什么?

慕絲7291255 2019-11-05 14:55:43
在Java中,obj.hashCode()返回一些值。該哈希碼在編程中有什么用?
查看完整描述

3 回答

?
天涯盡頭無女友

TA貢獻1831條經驗 獲得超9個贊

hashCode()用于桶裝Hash像實施方式中HashMap,HashTable,HashSet,等。

從中接收的值hashCode()用作存儲集合/映射元素的存儲桶編號。該存儲桶編號是集合/映射中元素的地址

完成后contains(),它將獲取元素的哈希碼,然后查找哈希碼指向的存儲桶。如果在同一個存儲桶中發現了多個元素(多個對象可以具有相同的哈希碼),則它將使用該equals()方法來評估這些對象是否相等,然后確定contains()是對還是錯,或者確定元素可以是是否添加到集合中。


查看完整回答
反對 回復 2019-11-05
?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

從Javadoc:


返回對象的哈希碼值。支持此方法是為了受益于哈希表,例如java.util.Hashtable。


的總合同hashCode為:


在Java應用程序執行期間,只要在同一個對象上多次調用它,該hashCode方法就必須始終返回相同的整數,前提是不修改該對象的equals比較中使用的信息。從一個應用程序的執行到同一應用程序的另一執行,此整數不必保持一致。


如果根據equals(Object)方法兩個對象相等,則hashCode在兩個對象中的每個對象上調用方法必須產生相同的整數結果。


它不要求,如果兩個對象根據是不相等的equals(java.lang.Object)方法,然后調用hashCode在每個兩個對象的方法必須產生不同的整數結果。但是,程序員應該意識到,為不相等的對象生成不同的整數結果可能會提高哈希表的性能。


在合理可行的范圍內,由Object類定義的hashCode方法確實為不同的對象返回不同的整數。(這一般是通過實現將該對象的內部地址轉換成一個整數,但不是由在Java編程語言不需要這種實現技巧。)


查看完整回答
反對 回復 2019-11-05
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

返回的值hashCode()是對象的哈希碼,即對象的內存地址(十六進制)。


根據定義,如果兩個對象相等,則它們的哈希碼也必須相等。如果重寫該equals()方法,則會更改兩個對象的相等方式,并且Object的實現hashCode()不再有效。因此,如果重寫equals()方法,則也必須重寫該hashCode()方法。


查看完整回答
反對 回復 2019-11-05
  • 3 回答
  • 0 關注
  • 632 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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