List集合进行按条件的过滤

在项目开发的过程中,我们经常会对List集合进行按条件的过滤,筛选出我们想要的结果或者是符合项目需求的数据。比如:我们有一批学生对象,每个学生都有自己的年龄属性,但是我们想要筛选出这一批学生中年龄为21和22的所有学生,我们就需要对这一批学生集合中的数据进行按条件的筛选,得到我们想要的结果。

创建学生实体类:

package com.shsj.entity;
public class Student {
private Integer stuNum; // 学号
private String name; // 姓名
private Integer age; // 年龄
public Integer getStuNum() {
    return stuNum;
}
public void setStuNum(Integer stuNum) {
    this.stuNum = stuNum;
}
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;
}
@Override
public String toString() {
    return "Student [stuNum=" + stuNum + ", name=" + name + ", age=" + age + "]";
}
}

使用Java8中的lambda表达式过滤

package com.shsj.test;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import com.shsj.entity.Student;
/**
* @Description 按条件筛选出List集合中的数据
* @author 刘鹏博
* @version v1.0
* @date 2018年8月23日
*/
public class FilterListTest {
/**
 * @Description 创建四个学生对象并设值,保存在list集合中,模拟数据
 * @author 刘鹏博
 * @return List<Student>
 */
public static List<Student> stuList() {
    List<Student> stuList = new ArrayList<Student>();
    Student stu1 = new Student();
    stu1.setStuNum(20180823);
    stu1.setName("张三");
    stu1.setAge(20);
    stuList.add(stu1);
    Student stu2 = new Student();
    stu2.setStuNum(20180824);
    stu2.setName("李四");
    stu2.setAge(21);
    stuList.add(stu2);
    Student stu3 = new Student();
    stu3.setStuNum(20180825);
    stu3.setName("王二");
    stu3.setAge(21);
    stuList.add(stu3);
    Student stu4 = new Student();
    stu4.setStuNum(20180826);
    stu4.setName("张五");
    stu4.setAge(22);
    stuList.add(stu4);
    return stuList;
}
public static void main(String[] args) {
    List<Student> stuList = stuList();
    // 需要筛选的条件:从stuList中筛选出年龄为21和22的学生
    List<Integer> ageList = new ArrayList<Integer>();
    ageList.add(21);
    ageList.add(22);
    // JDK1.8提供了lambda表达式, 可以从stuList中过滤出符合条件的结果。
    // 定义结果集
    List<Student> result = null;
    result = stuList.stream()
            .filter((Student s) -> ageList.contains(s.getAge()))
            .collect(Collectors.toList());
    // 打印原有stuList集合中的数据
    System.out.println("原有stuList集合中的数据");
    stuList.forEach((Student s) -> System.out.println(s.getName() + "--->" + s.getAge()));
    // 打印过滤筛选后的result结果
    System.out.println("过滤筛选后的result结果");
    result.forEach((Student s) -> System.out.println(s.getName() + "--->" + s.getAge()));
}

猜你喜欢

转载自blog.csdn.net/qq_39999478/article/details/107495454