JAVA如何迭代映射的映射中的值

JAVA如何迭代映射的映射中的值,java,loops,hashmap,multimap,Java,Loops,Hashmap,Multimap,我有我创建的地图的地图 Map doubleMap=newhashmap() 我尝试在第二个映射中迭代键的值 所以它可以是这样的: Key1->KeyA->value1 |-------->键->值2 |-------->键C->value3 键2->键A->值2 |-------->键->值4 |-------->键C->value1 我想继续多久就继续多久 我想检查map中是否有与其他字符串匹配的值 所以我有了mainValue=“value2”,我尝试在doubleMap中循环所有值,使用

我有我创建的地图的地图

Map doubleMap=newhashmap()

我尝试在第二个映射中迭代键的值

所以它可以是这样的:

Key1->KeyA->value1

|-------->键->值2

|-------->键C->value3

键2->键A->值2

|-------->键->值4

|-------->键C->value1

我想继续多久就继续多久

我想检查map中是否有与其他字符串匹配的值

所以我有了
mainValue=“value2”
,我尝试在
doubleMap
中循环所有值,使用名为
thisValue
的值变量,如果
thisValue.equals(mainValue)

我不知道我是如何得到这个值的。我试着这样做

thisValue=doubleMap.get(currentNumKey).keySet().toArray()[计数器]

但这给了我钥匙

如果我做了
thisValue=doubleMap.get(currentNumKey).get(currentLetterKey)
它会给我想要的正确值,但我不能迭代所有值


感谢您

您可以使用该方法获得地图中所有值的
集合。对于
doubleMap
,这将为您提供
Map
的集合。然后,您可以迭代该集合,对于每个
映射
,执行相同的技巧来查找您的值:

for (Map<String,String> map : doubleMap.values()) {
    for (String val : map.values()) {
        if (mainValue.equals(val)) {
            // value was found
        }
    }
}
for(映射:doubleMap.values()){
for(字符串val:map.values()){
if(mainValue.equals(val)){
//找到值
}
}
}

如果您需要指向该值的键(当然,可能不止一次),那么您需要迭代使用
doubleMap
以及为每个键检索的每个
Map
获取的键集(或条目集,使用)。循环看起来应该类似。

使用该方法可以获得映射中所有值的
集合。对于
doubleMap
,这将为您提供
Map
的集合。然后,您可以迭代该集合,对于每个
映射
,执行相同的技巧来查找您的值:

for (Map<String,String> map : doubleMap.values()) {
    for (String val : map.values()) {
        if (mainValue.equals(val)) {
            // value was found
        }
    }
}
Map<String, Map<String, String>> nestedMap = new HashMap<>();
nestedMap.put ... 
for(映射:doubleMap.values()){
for(字符串val:map.values()){
if(mainValue.equals(val)){
//找到值
}
}
}
如果您需要指向该值的键(当然,可能不止一次),那么您需要迭代使用
doubleMap
以及为每个键检索的每个
Map
获取的键集(或条目集,使用)。循环看起来应该类似。

Map nestedMap=new HashMap();
Map<String, Map<String, String>> nestedMap = new HashMap<>();
nestedMap.put ... 
nestedMap.put。。。
重命名(doubleMap非常容易引起误解),并指出单独创建一个空映射是不行的

现在,您可以像这样迭代地图:

for (Entry<Map<Map<String, String>>> outer : nestedMap.entrySet) {
  outer.getKey() ... would be "Key1"
  outer.getValue() ... represents that inner map
for(外部条目:nestedMap.entrySet){
outer.getKey()…将是“Key1”
outer.getValue()…表示该内部映射
对于内部循环,它是非常相同的;这意味着您可以对outer.getValue()返回的值使用each和entrySet(); nestedMap.put。。。
重命名(doubleMap非常容易引起误解),并指出单独创建一个空映射是不行的

现在,您可以像这样迭代地图:

for (Entry<Map<Map<String, String>>> outer : nestedMap.entrySet) {
  outer.getKey() ... would be "Key1"
  outer.getValue() ... represents that inner map
for(外部条目:nestedMap.entrySet){
outer.getKey()…将是“Key1”
outer.getValue()…表示该内部映射

对于内部循环,它是非常相同的;这意味着您可以对outer.getValue()返回的值使用each和entrySet()。

我认为您需要向我们展示您的代码,而不是试图解释它。有太多的差距(例如,您提到了
字母键
,但没有告诉我们这是什么意思——请不要解释它的意思,只给我们看代码).张贴一篇演示你尝试了什么以及困难是什么的文章。@ajb我展示了所有代码需要。
letterKeys
clear just=KeyA,KeyB,KeyC…这只是理解我谈论的是哪一个键的一种方式。这对你来说很清楚。我不清楚。如果“我展示了所有代码需要”我希望你能从比我更聪明的人那里得到帮助。我不能以此为基础提供帮助。对不起,我认为你需要向我们展示你的代码,而不是试图解释它。有太多的差距(例如,你提到了
字母键
,但没有告诉我们这意味着什么——请不要解释它意味着什么,只是向我们展示代码).张贴一篇演示你尝试了什么以及困难是什么的文章。@ajb我展示了所有代码需要。
letterKeys
clear just=KeyA,KeyB,KeyC…这只是理解我谈论的是哪一个键的一种方式。这对你来说很清楚。我不清楚。如果“我展示了所有代码需要”我希望你能从比我聪明的人那里得到帮助。我不能据此提供帮助。对不起。