2016-07-07 3 views
0

Следующая программа, которую я написал в java для печати ArrayList, но когда я печатаю список массивов, я получаю одну и ту же карту, напечатанную снова и снова. должен ли я попытаться использовать другой тип данных для его печати. Если я не найду подходящего метода, я буду использовать класс POJO.Печать ArrayList <HashMap>

import java.util.HashMap; 
import java.util.ArrayList; 
public class HelloWorld{ 

    public static void main(String []args){ 
     ArrayList<String> nlist = new ArrayList<String>(); 
     ArrayList<String> alist = new ArrayList<String>(); 
     nlist.add("Mich"); 
     nlist.add("Aud"); 
     alist.add("22"); 
     alist.add("20"); 
     HashMap<String,String> response = new HashMap<String,String>(); 
     ArrayList<HashMap<String,String>> responseList = new  ArrayList<HashMap<String,String>>(); 
     for(int i=0; i< nlist.size(); i++){ 
     response.put("Name",nlist.get(i)); 
     response.put("Age",alist.get(i)); 
     responseList.add(response); 
     } 
     System.out.println("Result="+responseList); 
    } 
} 

ВЫХОД:

Result=[{Age=20 , Name=Aud},{Age=20 , Name=Aud}] 
+2

Вы только вызываете 'println()' один раз, поэтому я не вижу, как вы получаете что-либо напечатанное снова и снова. " Вы можете уточнить свой вопрос? –

+3

Вы добавляете один и тот же экземпляр 'HashMap' несколько раз в свой список. Переместите 'HashMap response = new HashMap ();' в ваш цикл. – Eran

+0

Такой вопрос возникает так часто, что для него должен быть какой-то канонический ответ. – shmosel

ответ

0

Try, чтобы переместить инициализацию HashMap внутри цикла for. Текущий код переопределяет ключи на одной карте.

0

Пожалуйста объявить HashMap<String,String> response = new HashMap<String,String>(); внутри for-loop следующим образом:

for(int i=0; i< nlist.size(); i++){ 
HashMap<String,String> response = new HashMap<String,String>(); 
response.put("Name",nlist.get(i)); 
response.put("Age",alist.get(i)); 
responseList.add(response); 
} 

После вышеуказанных изменений, выход:

enter image description here

+0

Привет @MichelleAlvares ваша проблема решена? –

0

Вам нужно создать новый response для каждой итерации цикла

for(int i=0; i< nlist.size(); i++){ 
     HashMap<String,String> response = new HashMap<String,String>(); 

     response.put("Name",nlist.get(i)); 
     response.put("Age",alist.get(i)); 
     responseList.add(response); 
    } 
0

Следующий код работает отлично:

ArrayList<String> nlist = new ArrayList<String>(); 
     ArrayList<String> alist = new ArrayList<String>(); 
     nlist.add("Mich"); 
     nlist.add("Aud"); 
     alist.add("22"); 
     alist.add("20"); 

     ArrayList<HashMap<String, String>> responseList = new ArrayList<HashMap<String, String>>(); 
     for (int i = 0; i < nlist.size(); i++) { 
      HashMap<String, String> response = new HashMap<String, String>(); 
      response.put("Name", nlist.get(i)); 
      response.put("Age", alist.get(i)); 
      responseList.add(response); 
     } 
     System.out.println("Result=" + responseList); 
    } 

Определить реакцию внутри для цикла ..

0

Everytime когда вызов происходит, хотя значения отклика, как и ожидалось, формальные параметры заменяются фактическими параметрами и дублированные ключи списка ответов заменяются текущим значением (последняя итерация). Проблема ответа в цикле решает проблему.

for(int i=0; i< nlist.size(); i++){ 
    HashMap<String,String> response = new HashMap<String,String>(); 
    response.put("Name",nlist.get(i)); 
    response.put("Age",alist.get(i)); 
    responseList.add(response); 
    } 
Смежные вопросы