关于java:获取嵌套的Hashmap值

Get nested Hashmap values

本问题已经有最佳答案,请猛点这里访问。

我有这个变量:

1
Hashmap<Integer,HashMap<Integer,Character>> map;

我有第一个(整数)和第三个元素(字符),我想用函数得到第二个整数。 我该怎么办?
我知道如何从普通的Hashmap变量中获取值,但我不知道如何使用嵌套的hashmap ...

我已经尝试过了:

1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.*;
public class Test{

  public static void main(String[] args){

   HashMap<Integer,HashMap<Integer,Character>> map;
   map = new HashMap<Integer,HashMap<Integer,Character>>();
   map.put(0,new HashMap<Integer,Character>());
   map.get(0).put(7,'c');

   System.out.println((map.get(0)).get('c'));
  }
}

我想打印7但是这个打印件给了我null。

更新:解决此问题的最佳方法是更改结构。 HashMap不是为了从值获取索引而设计的。 但是,有一种方法(见下文)。


HashMap不是为了通过值获取密钥而设计的,这是您尝试使用.get(c)进行的操作。 它旨在获取给定键的值。

如果您想要有效查找,则可能需要更改数据结构。

否则,您将不得不迭代内部Map的条目以找到具有所请求值的密钥(可能存在多个此类密钥)。

例如 :

1
2
3
4
5
6
7
8
9
10
HashMap<Integer,Character> inner = map.get(0);
Integer key = null;
if (inner != null) {
    for (Map.Entry<Integer,Character> entry : inner.entrySet()) {
        if (entry.getValue().equals('c')) {
            key = entry.getKey();
            break;
        }
    }
}