前言
1.基础类
@Data
public class SysUser {
private String name;
private Integer age;
private Integer height;
}
2.核心代码
public static void main(String[] args) {
List<SysUser> list1 = new ArrayList<>();
SysUser user11 = new SysUser();
user11.setName("张三");
user11.setAge(21);
user11.setHeight(178);
list1.add(user11);
SysUser user12 = new SysUser();
user12.setName("李四");
user12.setAge(18);
user12.setHeight(178);
list1.add(user12);
List<SysUser> list2 = new ArrayList<>();
SysUser user22 = new SysUser();
user22.setName("张三");
user22.setAge(19);
user22.setHeight(178);
list2.add(user22);
SysUser user24 = new SysUser();
user24.setName("王五");
user24.setAge(22);
user24.setHeight(168);
list2.add(user24);
SysUser user25 = new SysUser();
user25.setName("李四");
user25.setAge(18);
user25.setHeight(178);
list2.add(user25);
}
2.1.单条件筛选
List<SysUser> collect = list1.stream().filter(s ->
!list2.stream().map(SysUser::getAge).collect(Collectors.toList()).contains(s.getAge())
).collect(Collectors.toList());
log.info("对比结果:{}", collect);
- 由于list1中有条age为21,list2中没有age为21的数据,所以list1中的张三这条数据就被筛选出来了
2.2.多条件筛选
- 通过
姓名、年龄
筛选list1不存在list2的数据
List<SysUser> collect = list1.stream().filter(tb ->
list2.stream().filter(t ->
t.getName().equals(tb.getName())
&& t.getAge().equals(tb.getAge())
).findFirst().orElse(null) == null
).collect(Collectors.toList());
log.info("对比结果:{}", collect);
- 由于list1中有条name为张三、age为21,list2中没有同时满足这两个条件的数据,所以list1中的张三这条数据就被筛选出来了
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)