Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取嵌套的Hashmap值_Java_Hashmap_Nested - Fatal编程技术网

Java 获取嵌套的Hashmap值

Java 获取嵌套的Hashmap值,java,hashmap,nested,Java,Hashmap,Nested,我有一个变量: Hashmap<Integer,HashMap<Integer,Character>> map; Hashmap; 我有第一个(整数)和第三个元素(字符),我想用一个函数得到第二个整数。我该如何进行? 我知道如何从普通Hashmap变量中获取值,但我不知道如何使用嵌套Hashmap 我已经试过了: import java.util.*; public class Test{ public static void main(String[] arg

我有一个变量:

Hashmap<Integer,HashMap<Integer,Character>> map;
Hashmap;
我有第一个(整数)和第三个元素(字符),我想用一个函数得到第二个整数。我该如何进行? 我知道如何从普通Hashmap变量中获取值,但我不知道如何使用嵌套Hashmap

我已经试过了:

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'));
  }
}
import java.util.*;
公开课考试{
公共静态void main(字符串[]args){
HashMap图;
map=新的HashMap();
put(0,新HashMap());
map.get(0.put(7,'c');
System.out.println((map.get(0)).get('c');
}
}
我想打印7,但是这个打印给我空值


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

HashMap
不是设计用来通过值获取密钥的,这是您试图使用
.get(c)
执行的操作。它被设计为获取给定密钥的值

如果希望高效查找,您可能需要更改数据结构

否则,您必须迭代内部
映射的条目,以找到具有请求值的键(可能有多个这样的键)

例如:

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;
        }
    }
}
HashMap-inner=map.get(0);
整数键=空;
if(内部!=null){
对于(Map.Entry:internal.entrySet()){
if(entry.getValue().equals('c')){
key=entry.getKey();
打破
}
}
}

如果您有一个字符并希望为其检索整数值,为什么不使用
映射
而不是
映射
?非常感谢!我把它改成了地图,我终于可以用同样的打印方式打印值了。你完全正确。我改变了我的数据结构。谢谢你的代码,以防我需要一点挑战哈哈。