Java8 如何移除两个相同的List对象

Java8 移除两个相同List对象

List data1 = new ArrayList<>();
data1.add(new Data(7, 15));
data1.add(new Data(2, 17));
data1.add(new Data(2, 17));

List data2 = new ArrayList<>();
data2.add(new Data(1, 11));
data2.add(new Data(10, 9));
data2.add(new Data(10, 9));
data2.add(new Data(7, 15));
data2.add(new Data(2, 17));
data2.add(new Data(2, 17));

List result = data2.stream()
        .filter(d1 ->
                data1.stream()
                    .noneMatch(d2 -> Objects.equals(d1.getId(), d2.getId()))
        ).collect(Collectors.toList());
System.out.println(result);

结果:

在这里插入图片描述

如果多个条件

.noneMatch(d2 -> Objects.equals(d1.getId(), d2.getId()) && Objects.equals(d1.getId(), d2.getId()))

筛选出List不被另一个List包含的元素

List delTagGroup = new ArrayList<>();//需要删除的
       List originGroupId = qwTagGroupEntityList.stream().map(QwTagGroupEntity::getGroupId).collect(Collectors.toList());//原有的
       List newGroupId = corpTagList.getTag_group().stream().map(CorpTagList.TagGroupBean::getGroup_id).collect(Collectors.toList());//新的
       delTagGroup = originGroupId.stream().filter(o->!newGroupId.contains(o)).collect(Collectors.toList());//新的不在原有里面的

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

你可能感兴趣的:(Java8 如何移除两个相同的List对象)