我必須製作一個應用程序,它將使用哈希映射(s)模擬java中的電話簿。我想要實現2種搜索方法(輸入名稱以獲取數字並輸入數字以獲取名稱)。在java中使用hashmap實現的電話簿
有沒有什麼辦法可以使這兩種方法只有1個哈希映射定義像這樣HashMap<Person, Number> pb = new HashMap<>();
(其中Person和Number是類)?
我必須製作一個應用程序,它將使用哈希映射(s)模擬java中的電話簿。我想要實現2種搜索方法(輸入名稱以獲取數字並輸入數字以獲取名稱)。在java中使用hashmap實現的電話簿
有沒有什麼辦法可以使這兩種方法只有1個哈希映射定義像這樣HashMap<Person, Number> pb = new HashMap<>();
(其中Person和Number是類)?
不,你需要在這種情況下和Map<Number, Person>
,如果你想有一個快速訪問您的數據只有一個地圖,你會需要遍歷這當然是很慢的值。
你也可以使用一個BiMap從谷歌番石榴有一個地圖
一個bimap的(或「雙向映射」)做雙方是地圖,可以保留 獨特的價值觀,以及爲中它的鑰匙。這種約束 使bimaps以支持一個「逆視圖」,其是包含相同的條目,因爲這bimap的但具有反向的鍵和 值
此另一bimap的 可以經由BidiMap(雙向圖)來完成可用與Apache公共收藏。有關更多詳細信息,請參閱https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/BidiMap.html。但是,在這種情況下,名稱和數字必須是唯一的。如果這是不可能的,那麼你將不得不維護兩張地圖或使用一張地圖並迭代這些值。
這應該是相當可能的。 –
你可以,但你需要遍歷每個值來找到一個數字。只是一個觀察:數字保證是唯一的。名字不是。數字成爲關鍵點更有意義。 –