将LinkedHashMap对象添加到ArrayList中

时间:2013-12-17 20:34:56

标签: java arraylist linkedhashmap

这是我的代码:

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

为什么第二个值替换第一个值并重复?

感谢。

2 个答案:

答案 0 :(得分:3)

您应该在每次迭代时添加LinkedHashMap的新实例。

答案 1 :(得分:0)

此代码

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

将两个同一个地图实例添加到列表中,同时清除它两次。