在地图迭代中映射

时间:2016-07-25 18:22:20

标签: java dictionary iteration

我在班上定义了以下嵌套Map

private Map<String, Map<String, String>> messagesByFactTypeAndCategory;

public void setMessagesByFactTypeAndCategory(Map<String, Map<String, String>> messagesByFactTypeAndCategory) {
    this.messagesByFactTypeAndCategory = messagesByFactTypeAndCategory;
}

public Map<String, Map<String, String>> getMessagesByFactTypeAndCategory() {
    if (messagesByFactTypeAndCategory == null) {
        return Maps.newHashMap();
    }
    return messagesByFactTypeAndCategory;
}

我正在尝试但无法遍历messagesByFactTypeAndCategory地图并将其中的数据显示在控制台中。

以下是我到目前为止尝试的代码:

Map<String, Map<String, String>> newMap = executionResult.getMessagesByFactTypeAndCategory();
Set set = newMap.entrySet();
    Iterator iterator = set.iterator();
    while(iterator.hasNext()) {
        Map.Entry mentry = (Map.Entry)iterator.next();
        System.out.print("key is: "+ mentry.getKey() + " & Value is: ");
        System.out.println(mentry.getValue());
    }

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

如果您只需要遍历两个地图的所有条目,您可以按如下方式进行:

for (Entry<String, Map<String, String>> outerMapEntry : messagesByFactTypeAndCategory.entrySet()) {
        // do something with outerMapEntry
        System.out.println(outerMapEntry.getKey() + " => " + outerMapEntry.getValue());
        for (Entry<String, String> innerMapEntry : outerMapEntry.getValue().entrySet()) {
            // do something with inner map entry
            System.out.println(innerMapEntry.getKey() + " => " + innerMapEntry.getValue());
        }
    }

修改。一些解释。 每个外部映射条目都是一对String键和Map<String, String>值。因此,您可以在每次迭代时使用键和值执行某些操作。例如,您可以按原样打印键和值。或者您可以遍历该值(它是Map)并在内部循环中单独打印每个值条目。

我相信如何迭代&#34;简单&#34;地图如Map<String, String>(请参阅How to efficiently iterate over each Entry in a Map?),因此遍历内部地图没有任何困难。