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

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

哈希沖突用鏈表解決沖突,返回哪個元素?

哈希沖突用鏈表解決沖突,返回哪個元素?

慕碼人2483693 2019-01-16 01:26:46
在解決哈希沖突時有一種方法叫鏈地址法,就是把相同key的value用鏈表串起來。那么,當用這些相同的key取值時,會得到這個鏈表,可是鏈表里有多個值,要返回哪一個值給用戶?
查看完整描述

3 回答

?
梵蒂岡之花

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

 final Node<K,V> getNode(int hash, Object key) {
        Node<K,V>[] tab; Node<K,V> first, e; int n; K k;
        if ((tab = table) != null && (n = tab.length) > 0 &&
            (first = tab[(n - 1) & hash]) != null) {
            if (first.hash == hash && //檢查第一個Node是否性相等
                ((k = first.key) == key || (key != null && key.equals(k))))
                return first;
            if ((e = first.next) != null) {
                if (first instanceof TreeNode)
                //紅黑樹中查找
                    return ((TreeNode<K,V>)first).getTreeNode(hash, key);
                do {
                //鏈表查找
                    if (e.hash == hash &&
                        ((k = e.key) == key || (key != null && key.equals(k))))
                        return e;
                } while ((e = e.next) != null);
            }
        }
        return null;
    }

源碼是通過hash和equals比較返回的

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

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

當然是要去一個一個對比鏈中的 key,找到 key 對應的 value 呀

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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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