我有用
创建的地图地图 Map<String, Map<String, String>> doubleMap = new HashMap<>();
我尝试迭代第二张地图中的键值。
所以它可以像:
Key1 - &gt; KeyA - &gt;值1
| --------&GT; KeyB - &gt;值2
| --------&GT; KeyC - &gt; value3
Key2 - &gt; KeyA - &gt;值2
| --------&GT; KeyB - &gt; VALUE4
| --------&GT; KeyC - &gt;值1
继续我想要的。
我想检查地图中是否有与其他字符串匹配的值。
所以我有mainValue = "value2"
,我尝试使用名为doubleMap
的值变量循环遍历thisValue
中的所有值,并在thisValue.equals(mainValue)
我不知道如何得到thisValue
。我试试这个
thisValue = doubleMap.get(currentNumKey).keySet().toArray()[counter]
但这给了我一封信凯斯。
如果我做thisValue = doubleMap.get(currentNumKey).get(currentLetterKey)
它给了我想要的正确值,但我不能迭代所有值
谢谢你
答案 0 :(得分:2)
Map<String, Map<String, String>> nestedMap = new HashMap<>();
nestedMap.put ...
重命名(doubleMap非常具有误导性),并表示创建一个空的单独地图不会。
现在您可以迭代您的地图,如:
for (Entry<Map<Map<String, String>>> outer : nestedMap.entrySet) {
outer.getKey() ... would be "Key1"
outer.getValue() ... represents that inner map
对于内环,它是非常相同的;意味着你可以对outer.getValue()返回的值使用for-each和entrySet()。
答案 1 :(得分:1)
您可以使用values()
方法获取地图中所有值的Collection
。对于doubleMap
,这将为您提供Map<String,String>
的集合。然后,您可以遍历该集合,并为每个Map
执行相同的操作以找到您的值:
for (Map<String,String> map : doubleMap.values()) {
for (String val : map.values()) {
if (mainValue.equals(val)) {
// value was found
}
}
}
如果您需要导致该值的键(当然,可能会多次出现),那么您需要迭代使用Map.keySet()
(或条目)获得的密钥集设置,使用Map.entrySet()
)获取doubleMap
以及为每个密钥检索的每个Map
。循环应该看起来很相似。