[英]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.