介绍
Java Streams 为我们提供了一种高效且简洁的数据处理方式。Streams 的 filter()
方法允许我们根据条件或谓词从给定的流中过滤元素。在本实验中,我们将学习如何使用 filter()
方法并从 Java 流中过滤元素。
Java Streams 为我们提供了一种高效且简洁的数据处理方式。Streams 的 filter()
方法允许我们根据条件或谓词从给定的流中过滤元素。在本实验中,我们将学习如何使用 filter()
方法并从 Java 流中过滤元素。
让我们创建一个整数流,并从中过滤出偶数。我们将声明一个整数列表,将其转换为流,然后使用 filter()
方法过滤出偶数。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamFilter {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
Stream<Integer> stream = numbers.stream();
Stream<Integer> evenNumbers = stream.filter(i -> i % 2 == 0);
List<Integer> result = evenNumbers.collect(Collectors.toList());
System.out.println(result); // Output: [2, 4, 6, 8, 10]
}
}
在上面的代码中,我们声明了一个整数列表,使用 stream()
方法将其转换为流,然后使用 filter()
方法过滤出偶数。
让我们创建一个字符串流,并从中过滤出包含特定字母的字符串。我们将声明一个字符串列表,将其转换为流,然后使用 filter()
方法过滤出包含特定字母的字符串。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamFilter {
public static void main(String[] args) {
List<String> words = Arrays.asList("hello", "world", "java", "stream", "filter");
Stream<String> stream = words.stream();
char letter = 'l';
Stream<String> filteredWords = stream.filter(s -> s.indexOf(letter) != -1);
List<String> result = filteredWords.collect(Collectors.toList());
System.out.println(result); // Output: [hello, world, filter]
}
}
在上面的代码中,我们声明了一个字符串列表,使用 stream()
方法将其转换为流,然后使用 filter()
方法过滤出包含字母 'l' 的字符串。
让我们创建一个自定义对象流,并根据条件过滤出符合条件的对象。我们将声明一个自定义对象列表,将其转换为流,然后使用 filter()
方法根据条件过滤出对象。
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class StreamFilter {
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("John", 25),
new Person("Sarah", 30),
new Person("Mike", 35),
new Person("Emma", 40)
);
Stream<Person> stream = people.stream();
Stream<Person> filteredPeople = stream.filter(p -> p.getAge() > 30);
List<Person> result = filteredPeople.collect(Collectors.toList());
System.out.println(result); // Output: [Mike{name='Mike', age=35}, Emma{name='Emma', age=40}]
}
}
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 name + "{name='" + name + '\'' + ", age=" + age + '}';
}
}
在上面的代码中,我们声明了一个 Person
类型的自定义对象列表,使用 stream()
方法将其转换为流,然后使用 filter()
方法过滤出年龄大于 30 的对象。
在本实验中,我们学习了如何使用 Java Streams 的 filter()
方法根据条件或谓词过滤元素。我们通过 filter()
方法对整数流、字符串流以及自定义对象流进行了过滤操作。