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]

