首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >带有2个键的Hashmap

带有2个键的Hashmap
EN

Stack Overflow用户
提问于 2018-04-02 09:54:33
回答 4查看 3.6K关注 0票数 1

我想创建一个有2个关键字的哈希图。我该怎么做呢?

假设hashmap不是使用1个键来查找值,而是需要1个键,然后使用另一个键将搜索范围缩小到某个类型。

我需要它来使用我们给它的球员。那应该是key1。对于key2,我需要它是一个字符串,可以是类似于"fly“或"speed”的类型,然后我需要从这些类型中获取一个值。

我也不想使用超过1个类的这项工作。

如果我能做HashMap就好了,但你不能直接这么做。

我已经搜索过了,而且我还在学习一些java,并且还在阅读oracle java手册,所以请记住这一点,因为我不确定这是不是一个愚蠢的问题。

此外,我已经搜索了答案,但我尝试查看其他用户的问题和答案,但这对我的问题没有帮助。

EN

回答 4

Stack Overflow用户

发布于 2018-04-02 10:01:10

您可以使用两个map来完成此操作,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
Map<Kay1DataType, Map<Kay2DataType, V>> map = //...
//...

然后,您可以执行以下操作进行访问:

代码语言:javascript
代码运行次数:0
运行
复制
map.get(Key1).get(Key2);

然后将该值放入,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
Map<Kay2DataType, V> secondMap = //...
secondMap.put(Key2, /* Object of type V*/);

最后放到map

代码语言:javascript
代码运行次数:0
运行
复制
map.put(key1, secondMap);
票数 1
EN

Stack Overflow用户

发布于 2018-04-02 10:05:51

这个问题还不完全清楚,但我会尽我最大的努力……

这样做的唯一逻辑方法(假设它是一个键和值具有相同类型的HashMap ),您可以让一个键具有一个值,该值将作为第二个值的键,而第二个值是所需的值。我将编写一个快速示例(因为我知道当我尝试用书面形式解释它时,这似乎有点令人困惑)。如果您有任何问题,请随时发表意见。

代码语言:javascript
代码运行次数:0
运行
复制
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")));
    }
}

如果您一定要使键/值不同,唯一的方法就是使用两个不同的映射,某种程度上遵循相同的过程:

代码语言:javascript
代码运行次数:0
运行
复制
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")));
    }
}

希望这能有所帮助!

票数 0
EN

Stack Overflow用户

发布于 2018-04-07 17:45:57

尝试使用Map作为第一个Map的值。示例:

代码语言:javascript
代码运行次数:0
运行
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49604389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档