stream().filter
时间: 2023-09-11 18:05:14 浏览: 95
### 回答1:
"stream().filter" 是 Java 8 中的一个函数式编程方法,用于从流(Stream)中过滤元素。它接受一个 Predicate 函数,该函数定义了流中的元素是否应该被保留。filter 方法返回一个新的流,其中只包含通过测试的元素。
例如,下面的代码演示了如何使用 filter 方法从一个整数列表中筛选出所有偶数:
```
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
System.out.println(evenNumbers); // Output: [2, 4, 6]
```
### 回答2:
stream().filter 是 Java 8 引入的一个方法,用于对流进行筛选操作。它的作用是根据指定的条件,筛选出流中符合条件的元素,返回一个新的流,其中只包含满足条件的元素。
该方法接受一个参数,是一个 Predicate<T> 类型的函数式接口,用于指定筛选的条件,Predicate<T> 是一个判断条件的接口,它的 test() 方法会对流中的每个元素进行判断,如果满足条件,就返回 true,否则返回 false。
通过 filter() 方法可以实现很多不同的筛选需求,例如筛选出大于某个特定值的元素,或者筛选出满足某个条件的元素等。它可以与其他的流操作方法进行组合使用,如 map()、collect() 等,进一步实现对流的处理。
使用该方法时,首先需要创建一个流,可以通过集合的 stream() 方法或者数组的 stream() 方法来创建,然后链式调用 filter() 方法,并在其中传入判断条件的 lambda 表达式或方法引用。
示例代码如下:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0)
.collect(Collectors.toList());
上述代码创建了一个整数集合 numbers,然后使用 stream() 方法将其转换为流,接着使用 filter() 方法筛选出偶数,最后使用 collect() 方法将结果收集为一个新的 List。
这就是 stream().filter() 方法的基本介绍和使用方式。它是函数式编程在 Java 中的一种应用,可以简化代码并提高程序的可读性和灵活性。
### 回答3:
stream().filter() 是 Java 8 引入的 Stream API 中的方法之一。它的作用是过滤掉不满足指定条件的元素,并返回一个满足条件的新流。
filter() 方法接收一个 Predicate 参数,Predicate 是一个函数式接口,用于判断输入元素是否满足条件。如果满足条件,则保留该元素;如果不满足条件,则过滤掉该元素。
使用 filter() 方法可以实现多种过滤操作。比如,可以过滤掉某个集合中的偶数元素,可以过滤掉字符串集合中长度小于等于3的字符串,可以过滤掉学生集合中不及格的成绩等等。
示例代码如下:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
List<Integer> evenNumbers = numbers.stream()
.filter(n -> n % 2 == 0) // 过滤出偶数
.collect(Collectors.toList());
List<String> strings = Arrays.asList("apple", "banana", "cherry", "date");
List<String> longStrings = strings.stream()
.filter(s -> s.length() > 3) // 过滤出长度大于3的字符串
.collect(Collectors.toList());
List<Student> students = Arrays.asList(
new Student("Alice", 80),
new Student("Bob", 65),
new Student("Charlie", 90)
);
List<Student> passedStudents = students.stream()
.filter(s -> s.getScore() >= 60) // 过滤出及格的学生
.collect(Collectors.toList());
可以看出,使用 filter() 方法可以根据不同的条件过滤出满足条件的元素,非常方便实用。这样,我们可以更灵活地操作数据,减少不必要的处理,并提高代码的可读性和可维护性。
阅读全文