Get nested Hashmap values
我有这个变量:
我有第一个(整数)和第三个元素(字符),我想用函数得到第二个整数。 我该怎么办?
我知道如何从普通的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不是为了从值获取索引而设计的。 但是,有一种方法(见下文)。
-
如果您有一个字符并希望为其检索整数值,为什么不使用Map而不是Map?
-
非常感谢 ! 我为Map 更改了它,我终于可以使用相同的打印来打印该值。
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;
}
}
} |
-
你是完全正确的。 我改变了我的数据结构。 感谢代码,以防我想要一点挑战哈哈。