簡體   English   中英

帶有2個鍵的哈希圖

[英]Hashmap with 2 keys

我想用2個鍵創建一個hashmap。 我將如何去做呢?

假設哈希圖不是用1個鍵來查找值,而是需要1個鍵,然后使用另一個鍵將搜索范圍縮小到某種類型。

我需要它來使用我們提供的播放器。 那將是key1。 對於key2,我需要將它作為類型的字符串,該類型可以是“ fly”或“ speed”之類的東西,然后我需要從中獲取一個值。

我也不想為這個工作使用超過1個班級。

如果我可以做HashMap,但您不能直接做,那就太好了。

我已經搜索過,並且仍在學習一些Java,並且仍在閱讀Oracle Java手冊,因此請記住這一點,因為我不確定這是否是一個愚蠢的問題。

另外,我一直在尋找答案,但是我嘗試調查其他用戶的問題和答案,但這並沒有解決我的問題。

您可以通過使用以下兩個映射來做到這一點:

Map<Kay1DataType, Map<Kay2DataType, V>> map = //...
//...

然后訪問即可執行以下操作:

map.get(Key1).get(Key2);

然后,您可以按照以下步驟放置值:

Map<Kay2DataType, V> secondMap = //...
secondMap.put(Key2, /* Object of type V*/);

終於放到map

map.put(key1, secondMap);

問題尚不完全清楚,但我會盡力而為...

您可以執行此操作的唯一邏輯方法(假設它是HashMap,並且鍵和值的類型相同),則可以讓一個鍵的值充當第二個值的鍵,即所需的值。 我將寫一個簡單的示例(因為我知道當我嘗試以書面形式進行解釋時,這似乎有點令人困惑。)如果您有任何疑問,請隨時發表評論。

public class Example {
    static HashMap<String, String> map = new HashMap<>();
    public static void main(String[] args) {
        //The value from the first pair is the key for the second.
        map.put("Key 1", "Value 1");
        map.put("Value 1", "Value 2"); 

        //Prints: Value 2
        System.out.println(map.get(map.get("Key 1")));
    }
}

如果絕對必須使鍵/值不同,則唯一的方法是兩個不同的映射,遵循相同的過程:

public class Example {
    static HashMap<String, String> map = new HashMap<>();
    static HashMap<String, Integer> secondMap = new HashMap();
    public static void main(String[] args) {
        //The value from the first pair is the key for the second.
        map.put("Key 1", "Value 1");
        map.put("Value 1", 5); 

        //Prints: 5
        System.out.println(map.get(map.get("Key 1")));
    }
}

希望這可以幫助!

嘗試使用Map作為第一價值Map 例:

final Map<String,Map<String,String>> doubleKeyMap = new HashMap<>();
final Map<String,String> secondMap = new HashMap<>();
secondMap.put(secondKey, somevalue);
doubleKeyMap.put(mainKey, secondMap);

final String value = doubleKeyMap.get(firstKey).get(secondKey);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM