问题场景如下:
在Java程序中先new一个map用来存放数据,建立一个for循环,每次循环都将这个map添加到一个List里面,然后clear这个map,为什么最后得到的List里面都是重复的数据
问题出现的原因是在每次循环中,虽然将map添加到了List中,但是并没有创建一个新的map,而是每次都清空了同一个map的数据。因此,最后得到的List中的所有元素都是指向同一个map对象,导致最终List中的数据都是相同的。
解决这个问题的方法是,在每次循环的开头创建一个新的map对象,而不是在循环的结尾清空同一个map对象。这样可以确保每次循环都使用一个新的map对象来存放数据,从而避免数据重复的问题。以下是修改后的代码示例:
java
List<Map<String, Object>> list = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Map<String, Object> map = new HashMap<>();
// 向map中添加数据
map.put(“key”, “value”);
// 将map添加到list中
list.add(map);
}
在每次循环开始时创建一个新的map对象,确保每次循环都使用独立的map来存放数据,这样最后得到的List中的数据就不会重复了。