如何通过LinkedHashMap<String,ArrayList<String>>创建循环?

9

请帮我创建一个循环遍历 LinkedHashMap<String,ArrayList<String>> h:

if (h.get("key1").size() == 0)
    System.out.println("There is no errors in key1.");
else
    System.out.println("ERROR: there are unexpected errors in key1.");

if (h.get("key2").size() == 0)
    System.out.println("There is no errors in key2.");
else
    System.out.println("ERROR: there are unexpected errors in key2.");

if (h.get("key3").size() == 0)
    System.out.println("There is no errors in key3.");
else
    System.out.println("ERROR: there are unexpected errors in key3.");

if (h.get("key4").size() == 0)
    System.out.println("There is no errors in key4.\n");
else
    System.out.println("ERROR: there are unexpected errors in key4.\n");
3个回答

15
像这样吗?
for (String key : h.keySet())
{
    System.out.println("Key: " + key);   
    for(String str : h.get(key))
    {
       System.out.println("\t" +str);
    }
}

编辑:

for (String key : h.keySet())
{
    if(h.get(key).size() == 0)
    {
         System.out.println("There is no errors in " + key) ;
    }
    else
    {
        System.out.println("ERROR: there are unexpected errors in " + key);
    }
}

你能把我的确切信息添加到你的循环中吗? - Prostak
@Prostak,请查看我的编辑。听起来这就是你想要的。 - Bala R
3
有点晚了,但是这个返回值是按插入顺序排列的还是需要使用迭代器?LinkedHashMap 的 Java 文档与 HashMap 完全相同。 - edthethird
LinkedHashMap 保证有序,但并非所有的 HashMaps 都能保证:https://dev59.com/YXA85IYBdhLWcg3wJf8Z#2924143 - vsocrates

7

尝试使用以下代码:

Map<String, ArrayList<String>> a = new LinkedHashMap<String, ArrayList<String>>();
Iterator<Entry<String,ArrayList<String>>> itr = a.entrySet().iterator();
while (itr.hasNext()) {
    Entry<String,ArrayList<String>> entry = itr.next();
    String key = entry.getKey();
    System.out.println("key: " + key);
    List<String> list = entry.getValue();
    System.out.println("value: " + list);
}

这个会按照插入顺序返回吗? - Gopinath
是的,它将确保插入顺序,因为这里使用了LinkedHashMap。 - anubhava

5

在Java8中,另一种方法是使用foreach()方法

Map<String, List<String>> test1 = new LinkedHashMap<String, List<String>>();
test1.forEach((key,value) -> {
    System.out.println(key + " -> " + value);
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接