Map的clear踩坑

 

自己太蠢代码如下:

List> listMap = new ArrayList>();
Map map = new HashMap();

map.put("key", 1);

listMap.add(map);
map.clear();

map.put("key", 2);

listMap.add(map);
System.out.println(listMap);

输出如下:
[{key=2}, {key=2}]

原因如下:

map.clear();只清除了map中的数据,其内部指针指向的地址未改变
所以导致list中两个map的内容都是一样的

避归:

map.clear();替换为

map = new HashMap();

你可能感兴趣的:(java)