目录
- 1 需求
- 2 代码实现
1 需求
现在有两个list集合,A 集合 B集合; 两个集合里面都存储user对象, 现在要将B集合里面,不在A集合的数据过滤出来之后,得到;
就是取差集;
2 代码实现
代码语言:javascript复制 List<UserInfo> user1 = new ArrayList<>();
UserInfo userInfo = new UserInfo();
userInfo.setId(1);
userInfo.setName("小红");
UserInfo userInfo1 = new UserInfo();
userInfo1.setId(2);
userInfo1.setName("小名");
user1.add(userInfo);
user1.add(userInfo1);
List<UserInfo> user2 = new ArrayList<>();
UserInfo userInfo2 = new UserInfo();
userInfo2.setId(1);
userInfo2.setName("小ee");
user2.add(userInfo2);
UserInfo userInfo3 = new UserInfo();
userInfo3.setId(3);
userInfo3.setName("小444");
user2.add(userInfo3);
UserInfo userInfo4 = new UserInfo();
userInfo4.setId(5);
userInfo4.setName("小5555");
user2.add(userInfo4);
List<UserInfo> listadd =
user2.stream().filter(item -> !user1.stream().map(up -> up.getId()).collect(
Collectors.toList()).contains(item.getId())).collect(Collectors.toList());
for(UserInfo item: listadd){
System.out.println(item.getId());
System.out.println(item.getName());
}
代码语言:javascript复制@Data
public class UserInfo {
private int id;
private String name;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
UserInfo userInfo = (UserInfo) o;
return id == userInfo.id;
}
@Override
public int hashCode() {
return Objects.hash(id, name);
}
}