Java 8流过滤器示例
时间:2020-02-23 14:34:53 来源:igfitidea点击:
在本教程中,我们将看到Java 8流过滤器示例。
我们可以将列表或者数组转换为 stream
非常轻松并在其顶部执行各种操作.java 8流提供各种方法,如map
,
filter
那 reduce
等。
Java 8流过滤器
正如名字所建议的那样, filter
方法用于根据标准滤波流。
我们可以将Lambda表达式传递给过滤方法,但它应该始终返回一个
boolean value
。
我们已经看到了如何通过谓词对象来过滤方法来过滤集合。
让我们在举例的帮助下了解更多:让我们说你有 Student
程序如下:
package org.igi.theitroad; public class Student { private int id; private String name; private String gender; private int age; public Student(int id, String name, String gender, int age) { super(); this.id = id; this.name = name; this.gender = gender; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", gender=" + gender + ", age=" + age + "]"; } }
让我们说你有学生对象列表 studentList
你需要过滤所有男学生。
我们可以通过以下代码的流的帮助来完成:
//Filter all male students List maleStudents=studentList.stream() .filter(s-> s.getGender().equalsIgnoreCase("M") ) .collect(Collectors.toList()); System.out.println("Male students are :"+maleStudents);
其中我们使用了Stream的 filter
过滤列表的方法,然后将结果收集到另一个列表 Collectors.toList()
。
Java 8过滤器,findany或者orelse方法
我们可以使用Stream的过滤方法来过滤列表和使用 findAny
和 orElse
基于条件的方法。
例如:我们想要过滤名称的学生 John
,如果我们在列表中没有找到它然后返回 null
。
//Filer based on name Student student=studentList.stream() .filter(s-> s.getName().equalsIgnoreCase("John")) .findAny() .orElse(null); System.out.println("Student with Name john :"+student);
让我们创建一个主要类:
package org.igi.theitroad; import java.util.ArrayList; import java.util.List; import java.util.function.Predicate; import java.util.stream.Collectors; public class Java8StreamFilterExamples { public static void main(String[] args) { List studentList=createStudentList(); //Filter all male students List maleStudents=studentList.stream() .filter(s>s.getGender().equalsIgnoreCase("M")) .collect(Collectors.toList()); System.out.println("Male students are :"+maleStudents); //Filter based on name Student student=studentList.stream() .filter(s-> s.getName().equalsIgnoreCase("John")) .findAny() .orElse(null); System.out.println("Student with Name john :"+student); } public static List createStudentList() { List studentList=new ArrayList(); Student s1=new Student(1, "igi", "M", 19); Student s2=new Student(2, "John", "M", 17); Student s3=new Student(3, "Mary", "F", 14); Student s4=new Student(4, "Martin", "M", 21); Student s5=new Student(5, "Monica", "F", 16); Student s6=new Student(6, "Ally", "F", 20); studentList.add(s1); studentList.add(s2); studentList.add(s3); studentList.add(s4); studentList.add(s5); studentList.add(s6); return studentList; } }
运行上面的程序时,我们将得到以下输出:
Male students are :[Student [id=1, name=igi, gender=M, age=19], Student [id=2, name=John, gender=M, age=17], Student [id=4, name=Martin, gender=M, age=21]] Student with Name john :Student [id=2, name=John, gender=M, age=17]