为什么会使 map value 的 list 元素重复?
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Test {
public static void main(String[] args) throws Exception {
ObjectMapper jackson = new ObjectMapper();
Map<String, List<String>> map = new HashMap<>();
map.put("key", Arrays.asList("a", "b", "c"));
DataInfo dataInfo = new DataInfo(map);
// {"map":{"key":["a","b","c"]},"copyList":["a","b","c"]}
String json = jackson.writeValueAsString(dataInfo);
System.out.println(dataInfo.getMap().get("key").size()); // 3
DataInfo di = jackson.readValue(json, DataInfo.class);
System.out.println(di.getMap().get("key").size()); // 6
}
static class DataInfo {
private Map<String, List<String>> map;
public DataInfo() {
}
public DataInfo(Map<String, List<String>> map) {
this.map = map;
}
//@Transient
public List<String> getCopyList() {
return map.get("key");
//return new ArrayList<>(map.get("key"));
}
public Map<String, List<String>> getMap() {
return map;
}
public void setMap(Map<String, List<String>> map) {
this.map = map;
}
}
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.