zoukankan      html  css  js  c++  java
  • Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)

    内容简介

    本文主要说明在Java8及以上版本中,使用stream().filter()来过滤一个List对象,查找符合条件的对象集合。

    List对象类(StudentInfo)

    public class StudentInfo implements Comparable<StudentInfo> {
    
        //名称
        private String name;
    
        //性别 true男 false女
        private Boolean gender;
    
        //年龄
        private Integer age;
    
        //身高
        private Double height;
    
        //出生日期
        private LocalDate birthday;
    
        public StudentInfo(String name, Boolean gender, Integer age, Double height, LocalDate birthday){
            this.name = name;
            this.gender = gender;
            this.age = age;
            this.height = height;
            this.birthday = birthday;
        }
    
        public String toString(){
            String info = String.format("%s		%s		%s			%s		%s",this.name,this.gender.toString(),this.age.toString(),this.height.toString(),birthday.toString());
            return info;
        }
    
        public static void printStudents(List<StudentInfo> studentInfos){
            System.out.println("[姓名]		[性别]		[年龄]		[身高]		[生日]");
            System.out.println("----------------------------------------------------------");
            studentInfos.forEach(s->System.out.println(s.toString()));
            System.out.println(" ");
        }
    
        @Override
        public int compareTo(StudentInfo ob) {
            return this.age.compareTo(ob.getAge());
            //return 1;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Boolean getGender() {
            return gender;
        }
    
        public void setGender(Boolean gender) {
            this.gender = gender;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public Double getHeight() {
            return height;
        }
    
        public void setHeight(Double height) {
            this.height = height;
        }
    
        public LocalDate getBirthday() {
            return birthday;
        }
    
        public void setBirthday(LocalDate birthday) {
            this.birthday = birthday;
        }
    }
    StudentInfo对象类

    测试数据

    //测试数据,请不要纠结数据的严谨性
    List<StudentInfo> studentList = new ArrayList<>();
    studentList.add(new StudentInfo("李小明",true,18,1.76,LocalDate.of(2001,3,23)));
    studentList.add(new StudentInfo("张小丽",false,18,1.61,LocalDate.of(2001,6,3)));
    studentList.add(new StudentInfo("王大朋",true,19,1.82,LocalDate.of(2000,3,11)));
    studentList.add(new StudentInfo("陈小跑",false,17,1.67,LocalDate.of(2002,10,18)));

    输出Students列表

     //输出List
    StudentInfo.printStudents(studentList);

    输出结果如下图:

     使用filter()过滤List

    //查找身高在1.8米及以上的男生
    List<StudentInfo> boys = studentList.stream().filter(s->s.getGender() && s.getHeight() >= 1.8).collect(Collectors.toList());
    //输出查找结果
    StudentInfo.printStudents(boys);

    结果如下图:

  • 相关阅读:
    Parameter Binding in ASP.NET Web API
    Which HTTP methods match up to which CRUD methods?
    ErrorHandling in asp.net web api
    HttpStatusCode
    Autofac Getting Started(默认的构造函数注入)
    Autofac Controlling Scope and Lifetime
    luvit 被忽视的lua 高性能框架(仿nodejs)
    undefined与null的区别
    VsCode中使用Emmet神器快速编写HTML代码
    字符串匹配---KMP算法
  • 原文地址:https://www.cnblogs.com/codecat/p/10912454.html
Copyright © 2011-2022 走看看