繁体   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