当前位置:   article > 正文

Java8对List集合中的数据进行过滤处理_java8 list过滤

java8 list过滤

目录

0.需求场景

1.编码实现


0.需求场景

        假设有这样一个需求,将List中所有超过 35 岁的员工剔除,该如何实现呢?我们可以利用 Java8 的流式编程,轻松的实现这个需求。

        当然也不局限与上述场景,对应的处理方法适用与根据 List 中元素或元素的属性,对 List 进行处理的场景。

1.编码实现

        首先定义一个 Employee 类,此类包含 name 和 age 两个属性。同时自动生成构造方法、 get 方法、set 方法和 toString 方法。

  1. public class Employee {
  2. private String name;
  3. private int age;
  4. public Employee() {
  5. }
  6. public Employee(String name, int age) {
  7. this.name = name;
  8. this.age = age;
  9. }
  10. public String getName() {
  11. return name;
  12. }
  13. public void setName(String name) {
  14. this.name = name;
  15. }
  16. public int getAge() {
  17. return age;
  18. }
  19. public void setAge(int age) {
  20. this.age = age;
  21. }
  22. @Override
  23. public String toString() {
  24. return "Employee{" +
  25. "name='" + name + '\'' +
  26. ", age=" + age +
  27. '}';
  28. }
  29. }

         首先循环创建 10 个 Employee 对象,组装成原始的 List 。随后对 List 中的每一个数控调用 whoDismiss 方法,过滤掉对应条件的数据。

  1. public class Main {
  2. public static void main(String[] args) {
  3. List<Employee> employeeList = new ArrayList<>();
  4. for (int i = 30; i < 40; i++) {
  5. employeeList.add(new Employee("张" + i, i));
  6. }
  7. //将每个Employee对象传入whoDismiss方法进行处理,处理完成后过滤空元素,最后转换为List
  8. List<Employee> dismissEmployee = employeeList.stream()
  9. .map(Main::whoDismiss).filter(Objects::nonNull).collect(Collectors.toList());
  10. dismissEmployee.forEach(employee -> System.out.println(employee.toString()));
  11. }
  12. /**
  13. * 设置条件,对List中的元素进行处理
  14. *
  15. * @param employee
  16. * @return
  17. */
  18. public static Employee whoDismiss(Employee employee) {
  19. if (employee.getAge() > 35) {
  20. return null;
  21. } else {
  22. return employee;
  23. }
  24. }
  25. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/919119
推荐阅读
相关标签
  

闽ICP备14008679号