对于嵌套树映射的每个循环

时间:2012-10-30 01:10:20

标签: java treemap

我有一个嵌套的treeMap,如果它有某个键,需要检查每个内部地图。例如:

TreeMap<String,TreeMap<String,Integer>> map

for each loop {
//check if the inner map has the key in it
}

我如何格式化for-each循环? 谢谢!

4 个答案:

答案 0 :(得分:4)

您可以使用地图的entrySet()来迭代地图中的条目,如下所示:

for (Map.Entry<String, TreeMap<String, Integer>> entry : map.entrySet())
{
    if (entry.getValue().containsKey(key)) {
        return entry.getValue().get(key);
    }
}

或者您可以使用地图的values()集合来迭代条目:

for (TreeMap<String, Integer> value : map.values())
{
    if (value.containsKey(key)) {
        return value().get(key);
    }
}

答案 1 :(得分:2)

您可以使用两个嵌套的“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'");
    }
}

答案 2 :(得分:1)

从外部地图获取值,迭代每个内部的元素。在每个元素TreeMap<String,Integer>中,使用containsKey检查地图元素是否包含所需的键。

    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");
        }
    }

答案 3 :(得分:0)

或者,您可以使用Guava TreeBasedTable,有许多方便的方法来处理您的嵌套数据结构。

TreeBasedTable<String, String, Integer> tb = TreeBasedTable.create();
tb.put("rowA", "colA", 1);
tb.put("rowB", "colB", 2);

tb.containsRow("rowA");
...