List<String> list = new ArrayList<>();
list.add("ttt");
list.add("aaaa");
Map<String, String> map = new HashMap<>();
List<Map<String, String>> result = new ArrayList<>();
for(String str : list){
map.put("test", str);
result.add(map);
}
System.out.println(JSON.toJSONString(result));
结果:[{"test":"aaaa"},{"$ref":"$[0]"}]
将map的创建防止for循环外边就会出现 {"$ref":"$[0]"}这种情况,放到for内就不会出现这种情况,这是为什么
因为map存放的时候 一个key 对应一个value 例如:{"test":"aaaa"}。你这里str是list,list根据下标有两个值,所以你在put方法的时候也需要循环。
第一种把map创建放在外面,你设置了两个同样的key:"test"。
第一次循环,其实{"test","ttt"}
但是第二次循环,你以为是[{“test”,"ttt"},{“test”,"aaaa"}],其实是[{“test”,"aaaa"},{“test”,"aaaa"}]
不信你打印看一下
总结:HashMap是的key是不能重复的