2017-02-12 11 views
0

我想重組下面的代碼如何通過有效使用迭代器或其他任何東西來改變我的輸出結構?

Map m=request.getParameterMap(); 
    Set s = m.entrySet(); 
    Iterator it = s.iterator(); 

    out.print("<h1> Your Input Based on MapParamters</h1><br><br>"); 
    while(it.hasNext()){ 

      Map.Entry<String,String[]> entry = (Map.Entry<String,String[]>)it.next(); 
      String key    = entry.getKey(); 
      String[] value   = entry.getValue(); 

      out.println(key + " : "); 
      if(value.length>1){  
        for (int i = 0; i < value.length; i++) { 
         out.println("<li>" + value[i].toString() + "</li>"); 
        } 
       }else 
         out.println(value[0].toString()+"<br><br>"); 

    } 

,輸出類似

ISBN : 
-1 
-2 
-3 
-4 

Title : 
-5 
-6 
-7 
-8 

Price : 
-9 
-10 
-11 
-12 



But I want the output like 

ISBN : 1 
Title : 5 
Price : 9 

ISBN : 2 
Title : 6 
Price : 10 

ISBN : 3 
Title : 7 
Price : 11 

ISBN : 4 
Title : 8 
Price : 12 

回答

0

下面將做的伎倆

Map m=request.getParameterMap(); 
Set<String> keys = m.keySet(); 
ArrayList<String[]> valuesArr = new ArrayList<>(m.values()); 

out.print("<h1> Your Input Based on MapParamters</h1><br><br>"); 

int i = 0; 
for (int j = 0; j < keys.size(); j++) { 
    for (String key : keys) { 
     for (String value : Arrays.copyOfRange(valuesArr.get(i), j, valuesArr.get(i).length)) { 
      out.println(key + " : " + value + " "); 
      i++; 
      break; 
     } 
    } 
    i=0; 
    out.println("<br/>") 
} 

Check the output of my code in command line version.

0

你有兩個選擇。要麼改變輸入來擁有這樣的對象。或

  1. 創建一個Java Pojo說參數
    2.雖然迭代循環根據您的要求填充此pojo。
    3.現在您可以按照自己想要的方式打印。
0

你可以試試這個:

Map m=request.getParameterMap(); 
Set s = m.keySet(); 
Iterator it = s.iterator(); 

System.out.print("<h1> Your Input Based on MapParamters</h1><br><br>"); 
ArrayList<String> outputStrs = new ArrayList<String>(); 

for(Object keyObj : s){ 
    String key = (String) keyObj; 
    String[] val = m.get(key); 
    for(int j=0;j<val.length; j++) 
    { 
     if(outputStrs.size() < (j+1)) 
      outputStrs.add(key+" : "+val[j]); 
     else 
     { 
      String existing = outputStrs.get(j); 
      existing+= " " + key+" : "+val[j]; 
      outputStrs.set(j, existing); 

     } 
    } 
} 
for(String outputStr: outputStrs) 
    System.out.println(outputStr +" <br> "); 
相關問題