2013-12-17 101 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); 
} 

增加了同一個地圖實例兩次到列表中,清除兩次爲好。