【问题标题】:Print LinkedHashMap in table format以表格格式打印 LinkedHashMap
【发布时间】:2012-09-22 08:00:23
【问题描述】:

我正在寻找更好的算法来通过其键以表格格式打印 LinkedHashMap。 我在这里解释场景,

//hashmap goes like this
LinkedHashMap<String , ArrayList<String>> hash=new LinkedHashMap<String,ArrayList<String>>();

// put some values in some arraylist
ArrayList<String> value1=Arrays.asList("s1", "s2", "s3");
ArrayList<String> value2=Arrays.asList("s4", "s5", "s6");
ArrayList<String> value1=Arrays.asList("s7", "s8", "s9");

// put values in hashmap
hash.put("key1",value1);
hash.put("key2",value2);
hash.put("key3",value3);

现在,我希望html 表中的输出应该是这样的。

key1 key2 key3

s1    s4   s7

s2    s5   s6

s3    s6   s9

有什么好的方法可以做到这一点?谢谢。

【问题讨论】:

    标签: java iterator hashmap


    【解决方案1】:

    下面的代码应该做

    public static void main(String[] args) {
            // hashmap goes like this
            LinkedHashMap<String, List<String>> hash = new LinkedHashMap<String, List<String>>();
    
            // put some values in some arraylist
            List<String> value1 = (List<String>) Arrays.asList("s1", "s2", "s3");
            List<String> value2 = (List<String>) Arrays.asList("s4", "s5", "s6");
            List<String> value3 = (List<String>) Arrays.asList("s7", "s8", "s9");
    
            // put values in hashmap
            hash.put("key1", value1);
            hash.put("key2", value2);
            hash.put("key3", value3);
    
            int count = 0;
            boolean exit = false;
            while (!exit) {
                for (String key : hash.keySet()) {
                    String value = hash.get(key).get(count);
                    System.out.printf("\t" + value);
                }
                System.out.printf("\n");
                count++;
                if (count == hash.get("key1").size()) {
                    exit = true;
                }
            }
    
        }
    

    以下是所需的输出:

    s1  s4  s7
    s2  s5  s8
    s3  s6  s9
    

    【讨论】:

    • 非常感谢。只是做了一些类型转换,它起作用了。谢谢
    【解决方案2】:

    如果你使用的是JSP页面,试试这个

    LinkedHashMap> hash=new LinkedHashMap>();

    // put some values in some arraylist
    ArrayList<String> value1=Arrays.asList("s1", "s2", "s3");
    ArrayList<String> value2=Arrays.asList("s4", "s5", "s6"); 
    ArrayList<String> value1=Arrays.asList("s7", "s8", "s9");
    
    // put values in hashmap
    hash.put("key1",value1);
    hash.put("key2",value2);
    hash.put("key3",value3);
    

    <% 
      for(Entry<String, ArrayList<String>> en: hash.entrySet()) {
          %>
       <td> 
         <% en.getKey(); %>
       </td>
     <%  }
     %>
     </td>
      </tr>
    

    您也可以使用 JSTL 标签来做到这一点。

    【讨论】:

    • 这只会打印LinkedHashMap 键,而不是ArrayList 中的值。
    【解决方案3】:

    试试,

     StringBuffer sb=new StringBuffer();
     sb.append("<tr>");
     sb.append("<td>" + hash.get("key1").get(0) + "</td>");
     sb.append("<td>" + hash.get("key2").get(0) + "</td>");
     sb.append("<td>" + hash.get("key3").get(0) + "</td>");
     sb.append("</tr>");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多