Java中List集合过滤出符合条件的List元素集合

  1. 对基本数据类型的过滤
    List<Integer> list=new ArrayList<>();
    list.add(2);
    list.add(4);
    list.add(20);
    list.add(2130);
    list.add(38);
    //过滤包含2的数据
    list=list.stream().filter(v ->!v.toString().contains("2")).collect(Collectors.toList());
    for (Integer integer : list) {
    System.out.println(integer);
    }
    结果集:
    38
  2. 对Map<String,Object>类型数据进行过滤
    List<Map<String,Object> > list=new ArrayList<>();
    Map<String,Object> map1=new HashMap<>();
    map1.put("sum",3);
    Map<String,Object> map2=new HashMap<>();
    map2.put("age",1);
    map2.put("sum",null);
    list.add(map1);
    list.add(map2);
    //过滤Map中key为sum对应的值为null的数据
    list= list.stream().filter(v ->v.get("sum")!=null).collect(Collectors.toList());
    for (Map<String, Object> map : list) {
    System.out.println(map.get("sum"));
    System.out.println(map.get("age"));
    }
    结果集:
    3
    null
  3. 对实体类进行过滤
    List<User> list = new ArrayList<>();
    //数据初始化
    User user = new User();
    user.setAge(10);
    user.setDelFlag(false);
    user.setName("tom");
    user.setPassword("123456");
    User user1 = new User();
    user1.setAge(12);
    user1.setDelFlag(true);
    user1.setName("rose");
    user1.setPassword("123456");
    User user2 = new User();
    user2.setAge(14);
    user2.setDelFlag(false);
    user2.setName("jack");
    user2.setPassword("123456");

    list.add(user);
    list.add(user1);
    list.add(user2);
    //保留未删除和年龄大于10的用户对象
    list = list.stream().filter(obj -> obj.getDelFlag() == false && obj.getAge() > 10).collect(Collectors.toList());
    for (User user3 : list) {
    System.out.println(user2);
    }

    class User {
    private String name;
    private Boolean delFlag;
    private Integer age;
    private String password;
        @Override
        public String toString() {
        return "User{" +
    "name='" + name + '\'' +
    ", delFlag=" + delFlag +
    ", age=" + age +
    ", password='" + password + '\'' +
    '}';
        }

    public String getName() {
    return name;
    }

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

    public Boolean getDelFlag() {
    return delFlag;
    }

    public void setDelFlag(Boolean delFlag) {
    this.delFlag = delFlag;
    }

    public Integer getAge() {
    return age;
    }

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

    public String getPassword() {
    return password;
    }

    public void setPassword(String password) {
    this.password = password;
    }
    结果集
    User{name='jack', delFlag=false, age=14, password='123456'}
posted @   懂得归零  阅读(12988)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示