【问题标题】:How to create a loop through LinkedHashMap<String,ArrayList<String>>?如何通过 LinkedHashMap<String,ArrayList<String>> 创建循环?
【发布时间】:2011-08-19 14:44:01
【问题描述】:

请帮我通过LinkedHashMap&lt;String,ArrayList&lt;String&gt;&gt; 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");

【问题讨论】:

    标签: java loops map linkedhashmap


    【解决方案1】:

    像这样?

    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 查看我的编辑。听起来这就是你想要的。
    • 有点晚了,但是这是按插入顺序返回还是我们必须使用迭代器? LinkedHashMap 的 javadocs 与 HashMap 的 javadocs 相同
    • LinkedHashMap 保证,但不是全部 HashMaps 做:stackoverflow.com/questions/2923856/…
    【解决方案2】:

    试试这个代码:

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

    【讨论】:

    • 这会按广告顺序返回吗?
    • 是的,它将确保插入顺序,因为这里使用的是 LinkedHashMap。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-03-24
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多