list的使用-----深拷贝
1、问题
一次开发中,使用list的时候,对list的内容进行改变时,出现数据丢失的问题,最后排查数据找到问题的原因,是因为使用list的是浅拷贝,值引用。
2、产生的原因
List<Question> questionList = new ArrayList<>();
Question question1 = new Question();
question1.setQuestionBody("111111111");
questionList.add(question1);
List<Question> questionList= questionList.stream().filter(item -> item.getId().equals(0)).collect(Collectors.toList());
System.arraycopy
使用 arrayList.addAll(); 进行数组的生成,结果还是浅拷贝,因为其使用的是System.arraycopy
源码如下:
public boolean addAll(Collection