我有一个嵌套的 treeMap 并且需要检查每个内部映射是否具有某个键。例如:
TreeMap<String,TreeMap<String,Integer>> map
for each loop {
//check if the inner map has the key in it
}
我将如何格式化 for-each 循环?谢谢!
您可以使用entrySet()
Map 的 来遍历映射中的条目,如下所示:
for (Map.Entry<String, TreeMap<String, Integer>> entry : map.entrySet())
{
if (entry.getValue().containsKey(key)) {
return entry.getValue().get(key);
}
}
或者您可以使用values()
Map 的集合来遍历条目:
for (TreeMap<String, Integer> value : map.values())
{
if (value.containsKey(key)) {
return value().get(key);
}
}
您可以使用两个嵌套的“foreach”循环遍历两个嵌套映射,如下所示:
for (Map.Entry<String,TreeMap<String,Integer>> entry1 : map.entrySet()) {
Map<String,Integer> innerMap = entry1.getValue();
if (innerMap.containsKey("my-key")) {
System.out.println("Map at key "+entry1.getKey()+" contains 'my-key'");
}
}
从外部映射中获取值,迭代每个内部的元素。在每个元素中,即 a TreeMap<String,Integer>
,用于containsKey
检查 map 元素是否包含所需的键。
TreeMap<String,TreeMap<String,Integer>> map =
new TreeMap<String, TreeMap<String,Integer>>();
for(TreeMap<String,Integer> mapElement: map.values()) {
//check if the inner map has the key in it
if(mapElement.containsKey("searchKey")){
System.out.println("Match key found in this map element");
}
}
或者,您可以使用 Guava TreeBasedTable,有许多方便的方法来处理您的嵌套数据结构。
TreeBasedTable<String, String, Integer> tb = TreeBasedTable.create();
tb.put("rowA", "colA", 1);
tb.put("rowB", "colB", 2);
tb.containsRow("rowA");
...