2012-09-22 85 views
1

我正在寻找更好的算法来通过其键以表格格式打印LinkedHashMap。 我解释一下这里的情况,以表格格式打印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 

这样做的好方法是什么?谢谢 。

回答

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 
+0

非常感谢。只是做了一些类型转换,并且工作。谢谢 –

1

如果你正在使用JSP 页面,试试这个

的LinkedHashMap>哈希=新的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标签。

+0

仅打印'LinkedHashMap'键,而不是值在'ArrayList'中。 – asgs

+0

是的,当然。我们必须通过值... :) – PermGenError

1

尝试,

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