首页 > 解决方案 > 对象的属性调用removeAll(),为什么会删除自己

问题描述

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;
}

这段代码是我写的一个测试方法,里面的代码System.out.println(dto.getIdList());,dto.getIdList()的大小是1,为什么不是3?为什么会自己删除呢?

标签: javaarraylistremoveall

解决方案


Oracle 文档 java11#List#removeallremoveAll()

从此列表中删除包含在指定集合中的所有元素(可选操作)。


,那么会发生什么?该列表idList具有值 1L、2L、3L 和bList 值 1L、2L。

当你调用removeAll()时将删除 1L 和 2L 并保留 3L,然后大小为 1


推荐阅读