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

增加了同一个地图实例两次到列表中,清除两次为好。