2013-12-17 2 views
0

Вот мой код:Добавление объекта LinkedHashMap в ArrayList

ArrayList<LinkedHashMap<String, String>> lev3 = new ArrayList<LinkedHashMap<String, String>>(); 
LinkedHashMap<String, String> lev4 = new LinkedHashMap<String, String>(); 

for (int k = 0; k < 2; k++) { 
    lev4.clear(); 
    lev4.put("item0"+k, "subitem0"+k); 
    lev4.put("item1"+k, "subitem1"+k); 
    lev4.put("item2"+k, "subitem2"+k); 
    lev4.put("item3"+k, "subitem3"+k); 
    lev4.put("item4"+k, "subitem4"+k); 
    lev3.add(lev4); 

    System.out.println(lev4); 
    System.out.println(lev3); 
    System.out.println(); 
} 

В результате:

{item00=subitem00, item10=subitem10, item20=subitem20, item30=subitem30, item40=subitem40} 
[{item00=subitem00, item10=subitem10, item20=subitem20, item30=subitem30, item40=subitem40}] 

{item01=subitem01, item11=subitem11, item21=subitem21, item31=subitem31, item41=subitem41} 
[{item01=subitem01, item11=subitem11, item21=subitem21, item31=subitem31, item41=subitem41}, {item01=subitem01, item11=subitem11, item21=subitem21, item31=subitem31, item41=subitem41}] 

Почему второе значение заменяет первое значение и дублировать?

Спасибо.

ответ

3

На каждой итерации вы должны добавить новый экземпляр LinkedHashMap.

+0

Это работает! Спасибо. –

+0

@MarkKorzhov Добро пожаловать;) Не забудьте отметить как принято ваш выбранный ответ. – Stephan

0

Этот код

for (int k = 0; k < 2; k++) { 
    lev4.clear(); 
    ... put stuff in lev4 
    lev3.add(lev4); 
} 

добавляет один и тот же экземпляр карты два раза в списке, клиринговые его дважды, а также.