Java 对象的属性调用removeAll(),为什么要删除自身 publicstaticvoidmain(字符串[]args){ Dto Dto=新的Dto(); 列表列表=新的ArrayList(); 添加(1L); 添加(2L); 添加(3L); dto.setIdList(aList); List bList=new ArrayList(); b添加(1L); bList.add(2L); List templast=dto.getIdList(); 圣殿骑士。雷莫维尔(布莱斯特); System.out.println(dto.getIdList()); } @资料 公共静态类Dto{ 公众名单上的游手好闲者; }
这段代码是我编写的测试方法,Java 对象的属性调用removeAll(),为什么要删除自身 publicstaticvoidmain(字符串[]args){ Dto Dto=新的Dto(); 列表列表=新的ArrayList(); 添加(1L); 添加(2L); 添加(3L); dto.setIdList(aList); List bList=new ArrayList(); b添加(1L); bList.add(2L); List templast=dto.getIdList(); 圣殿骑士。雷莫维尔(布莱斯特); System.out.println(dto.getIdList()); } @资料 公共静态类Dto{ 公众名单上的游手好闲者; },java,arraylist,removeall,Java,Arraylist,Removeall,这段代码是我编写的测试方法,System.out.println(dto.getIdList())中的代码,dto.getIdList()的大小是1,为什么不是3?它为什么要删除自身?从,删除所有() 从此列表中删除指定集合中包含的所有元素(可选操作) ,那么会发生什么呢?列表idList的值为1L、2L、3L和inbList 值1L、2L 调用removeAll()将删除1L和2L并保持3L,则大小为一 这是解决问题的方法。我只想删除模板,但dto更改了same,因为您从get()方法收到了
System.out.println(dto.getIdList())中的代码代码>,dto.getIdList()的大小是1,为什么不是3?它为什么要删除自身?从,删除所有()
从此列表中删除指定集合中包含的所有元素(可选操作)
,那么会发生什么呢?列表idList
的值为1L、2L、3L和inbList
值1L、2L
调用removeAll()
将删除1L和2L并保持3L,则大小为一
这是解决问题的方法。我只想删除模板,但dto更改了same,因为您从get()
方法收到了与您放入set()
中相同的列表,我没有更改dto。IdList,但dto.getIdList()也是1,如果更改没有反映在get()
方法中的dto
类的原始列表中,只需调用.clone()
即可复制列表
public static void main(String[] args) {
Dto dto = new Dto();
List<Long> aList = new ArrayList<>();
aList.add(1L);
aList.add(2L);
aList.add(3L);
dto.setIdList(aList);
List<Long> bList = new ArrayList<>();
bList.add(1L);
bList.add(2L);
List<Long> tempList = dto.getIdList();
tempList.removeAll(bList);
System.out.println(dto.getIdList());
}
@Data
public static class Dto{
public List<Long> idList;
}