自己太蠢代码如下: List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>(); Map<String, Object> map = new HashMap<String, Object>(); 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<String, Object>();