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

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

JavaHashMap如何使用相同的哈希代碼處理不同的對象?

JavaHashMap如何使用相同的哈希代碼處理不同的對象?

素胚勾勒不出你 2019-06-18 16:08:38
JavaHashMap如何使用相同的哈希代碼處理不同的對象?根據我的理解,我認為:兩個對象具有相同的哈希代碼是完全合法的。如果兩個對象相等(使用equals()方法),那么它們具有相同的哈希代碼。如果兩個對象不相等,則它們不能具有相同的哈希碼。我說對了嗎?如果是正確的,我有以下問題:HashMap內部使用對象的哈希代碼。因此,如果兩個對象可以具有相同的哈希代碼,那么HashMap跟蹤它使用哪個鍵?有人能解釋一下HashMap在內部使用對象的哈希代碼?
查看完整描述

3 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

hashmap的工作方式如下(這稍微簡化了一點,但它說明了基本機制):

它有許多用來存儲鍵值對的“桶”。每個桶都有一個唯一的編號-這就是桶的標識。當您將鍵值對放入映射中時,哈希映射將查看密鑰的哈希代碼,并將其存儲在標識符是密鑰的哈希代碼的桶中。例如:密鑰的哈希代碼是235->該對存儲在桶號235中。(請注意,一個桶可以存儲多個鍵值對)。

當您在hashmap中查找一個值時,通過給它一個鍵,它將首先查看您提供的密鑰的哈希代碼。然后,hashmap將查看相應的桶,然后將您給出的鍵與桶中所有對的鍵進行比較,方法是將它們與equals().

現(xiàn)在,您可以看到這對于在映射中查找鍵值對是多么有效:通過鍵的哈希代碼,hashmap立即知道要在哪個桶中查看,因此它只需要測試該桶中的內容。

查看上面的機制,您還可以看到在hashCode()equals()鑰匙的方法:

  • 如果兩個鍵是相同的(equals()回報true(當你比較他們時,他們hashCode()方法必須返回相同的數字。如果鍵違反了這一點,那么相等的鍵可能存儲在不同的桶中,并且hashmap將無法找到鍵值對(因為它將在同一個桶中查找)。

  • 如果兩個鍵是不同的,那么它們的哈希代碼是否相同并不重要。如果它們的哈希代碼相同,它們將存儲在同一個桶中,在本例中,hashmap將使用equals()把他們區(qū)分開來。


查看完整回答
反對 回復 2019-06-18
?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

你的第三個說法是不正確的。

兩個不平等對象具有相同的哈希代碼是完全合法的。它被HashMap作為一個“第一次通過的過濾器”,這樣地圖就可以快速地找到可能具有指定鍵的條目。然后測試具有相同哈希碼的密鑰是否與指定的鍵相等。

您不希望要求兩個不平等的對象不能具有相同的哈希代碼,否則將限制為2。32可能的物體。(這也意味著不同類型甚至不能使用對象的字段來生成哈希代碼,因為其他類可以生成相同的哈希。)


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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