java 实现 A的list集合,B的list集合,里面存储的是实体类,根据id比较,得到B中在A里面没有的数据

2022-08-14 11:00:36 浏览数 (1)

目录

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

0 人点赞