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

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

Java是否具有帶有反向查找的HashMap?

Java是否具有帶有反向查找的HashMap?

慕慕森 2019-10-11 13:59:08
我有以“鍵-鍵”格式而不是“鍵-值”格式組織的數(shù)據(jù)。這就像一個(gè)HashMap,但是我將需要在兩個(gè)方向上進(jìn)行O(1)查找。這種數(shù)據(jù)結(jié)構(gòu)有名稱嗎,Java的標(biāo)準(zhǔn)庫(kù)中是否包含類似的名稱?(或者Apache Commons?)我可以編寫自己的類,該類基本上使用兩個(gè)鏡像的Map,但我不想重蹈覆轍(如果已經(jīng)存在,但我只是沒有在尋找正確的術(shù)語(yǔ))。
查看完整描述

3 回答

?
哆啦的時(shí)光機(jī)

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

Java API中沒有此類。您想要的Apache Commons類將成為BidiMap的實(shí)現(xiàn)之一。


作為數(shù)學(xué)家,我將這種結(jié)構(gòu)稱為雙射。


查看完整回答
反對(duì) 回復(fù) 2019-10-11
?
慕田峪9158850

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

這是我用來完成此操作的簡(jiǎn)單類(我不想再有第三方依賴項(xiàng))。它沒有提供“地圖”中的所有可用功能,但是是一個(gè)好的開始。


    public class BidirectionalMap<KeyType, ValueType>{

        private Map<KeyType, ValueType> keyToValueMap = new ConcurrentHashMap<KeyType, ValueType>();

        private Map<ValueType, KeyType> valueToKeyMap = new ConcurrentHashMap<ValueType, KeyType>();


        synchronized public void put(KeyType key, ValueType value){

            keyToValueMap.put(key, value);

            valueToKeyMap.put(value, key);

        }


        synchronized public ValueType removeByKey(KeyType key){

            ValueType removedValue = keyToValueMap.remove(key);

            valueToKeyMap.remove(removedValue);

            return removedValue;

        }


        synchronized public KeyType removeByValue(ValueType value){

            KeyType removedKey = valueToKeyMap.remove(value);

            keyToValueMap.remove(removedKey);

            return removedKey;

        }


        public boolean containsKey(KeyType key){

            return keyToValueMap.containsKey(key);

        }


        public boolean containsValue(ValueType value){

            return keyToValueMap.containsValue(value);

        }


        public KeyType getKey(ValueType value){

            return valueToKeyMap.get(value);

        }


        public ValueType get(KeyType key){

            return keyToValueMap.get(key);

        }

    }


查看完整回答
反對(duì) 回復(fù) 2019-10-11
?
慕工程0101907

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

這是我的2美分。


或者,您可以對(duì)泛型使用簡(jiǎn)單的方法。小菜一碟。


public static <K,V> Map<V, K> invertMap(Map<K, V> toInvert) {

    Map<V, K> result = new HashMap<V, K>();

    for(K k: toInvert.keySet()){

        result.put(toInvert.get(k), k);

    }

    return result;

}

當(dāng)然,您必須具有唯一值的映射。否則,將替換其中之一。


查看完整回答
反對(duì) 回復(fù) 2019-10-11
  • 3 回答
  • 0 關(guān)注
  • 687 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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