Java 一个List泛型根据另一个List泛型的属性进行过滤

 这个需求是在批量入库的时候,进行批量校验用到的

1.逻辑是传入List参数,需要入库

2.根据List去查询库中是否存在

3.用传入的List进行过滤,获取苦衷不存在的resList

4.插入resList(这样可以保证入库不重复)

 实体类User

package test.send;

public class User {
    private String id;
    private String name;
    private Integer age;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

 有两个List<User>

list1要过滤到list2中已存在的(过滤判断条件是name相同)

List<User> list1 = new ArrayList<>();

User u1 = new User();
u1.setName("u1");
u1.setAge(12)

User u2 = new User();
u2.setName("u2");
u2.setAge(13)

User u3 = new User();
u3.setName("u3");
u3.setAge(13)

list1.add(u1);
list1.add(u2);
list1.add(u3);

List<User> list2 = new ArrayList<>();

User u3 = new User();
u3.setName("u3");
u3.setAge(13)

User u4 = new User();
u3.setName("u4");
u3.setAge(13)


//resList 过滤后的结果
 List<User> resList = list1 .stream().filter(new Predicate<User>() {
            @Override
            public boolean test(User u) {
                //如根据name过滤
                for (User user : list2) {
                    if(u.getName().equals(user.getName())){
                        return false;
                    }
                }
                return true;
            }
        }).collect(Collectors.toList());


//resList 输出为 u1 u2
发布了206 篇原创文章 · 获赞 45 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/corleone_4ever/article/details/105092617
今日推荐