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