Java Stream: 使用filter
方法过滤对象
在Java编程中,Stream API提供了一种便捷的方法来处理集合对象。通过使用Stream API,我们可以轻松对集合进行各种操作,如过滤、映射、排序等。其中,filter
方法可以帮助我们过滤集合中的对象,只保留符合条件的对象。
Stream API简介
Stream是Java 8引入的一个新的抽象概念,它代表了一系列元素,并支持在这些元素上进行各种操作。Stream API提供了丰富的方法来操作集合,如map
、filter
、reduce
等,使得我们可以更加高效地处理集合数据。
使用filter
方法过滤对象
在Stream API中,filter
方法用于过滤集合中的元素,只保留满足指定条件的元素。下面我们通过一个示例来演示如何使用filter
方法过滤对象。
假设我们有一个Person
类,表示一个人的信息,包括姓名和年龄:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
现在,我们有一个包含多个Person
对象的集合,我们想要过滤出年龄大于18岁的人。我们可以使用filter
方法实现这个功能:
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("Alice", 25),
new Person("Bob", 17),
new Person("Charlie", 30)
);
List<Person> adults = people.stream()
.filter(person -> person.getAge() > 18)
.collect(Collectors.toList());
adults.forEach(System.out::println);
}
}
在上面的示例中,我们首先创建了一个包含多个Person
对象的集合people
,然后使用stream
方法将集合转换为Stream对象。接着我们调用filter
方法,传入一个Predicate
对象,用于判断年龄是否大于18岁。最后我们使用collect
方法将过滤后的结果收集到一个新的集合中,并通过forEach
方法打印每个符合条件的Person
对象。
类图
下面是Person
类的类图:
classDiagram
class Person {
- String name
- int age
+ Person(String name, int age)
+ String getName()
+ int getAge()
+ String toString()
}
在类图中,我们可以看到Person
类有name
和age
两个字段,以及相应的构造方法和getter方法。
总结
通过使用filter
方法,我们可以方便地过滤集合中的对象,只留下符合条件的对象。Stream API的强大之处在于提供了丰富的操作方法,使得我们可以更加便捷地对集合进行各种处理。在实际开发中,可以充分利用Stream API来提高代码的简洁性和可读性。希望本文对你理解Java Stream中的filter
方法有所帮助!