Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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和in
bList
值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;
}