2017-02-12 22 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 say Параметр
    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> "); 

 Смежные вопросы

  • Нет связанных вопросов^_^