문제

Here is my code:

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();
}

As a result:

{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}]

Why the second value replaces the first value and duplicate?

Thanks.

도움이 되었습니까?

해결책

You should add a new instance of LinkedHashMap at each iteration.

다른 팁

This code

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

adds the one and the same map instance two times to the list, clearing it twice as well.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top