java8写一个共通方法:根据条件过滤StreamA,生成新的Stream输出。已知StreamA已经按照skip排好序了,要求符合以流的形式边读边写的思想,输出的Stream保持原来的顺序
时间: 2024-03-12 18:47:03 浏览: 57
Java8-遇见Lambda.pptx
可以使用Java 8中的Stream.filter()方法来过滤StreamA,然后使用Stream.collect()方法生成新的Stream输出。在过滤时,可以使用Java 8中的Predicate接口来定义条件。
以下是一个示例代码:
```java
public static <T> Stream<T> filterStream(Stream<T> streamA, Predicate<T> predicate) {
// 使用 filter 方法过滤 StreamA
Stream<T> filteredStream = streamA.filter(predicate);
// 使用 collect 方法生成新的 Stream 输出
return filteredStream.collect(Collectors.toList()).stream();
}
```
在上述代码中,我们首先定义了一个名为filterStream的共通方法,它接受一个StreamA和Predicate作为参数。然后,我们使用Stream.filter()方法过滤StreamA,并将结果保存在一个新的Stream对象中。接下来,我们使用Stream.collect()方法将过滤后的结果收集到一个List中,并将List转换为一个新的Stream对象,以保持原来的顺序。最后,我们返回这个新的Stream对象作为输出。
使用示例:
```java
Stream<Integer> streamA = Stream.of(1, 2, 3, 4, 5);
Predicate<Integer> predicate = num -> num % 2 == 0;
Stream<Integer> filteredStream = filterStream(streamA, predicate);
filteredStream.forEach(num -> System.out.println(num));
```
在上述示例中,我们定义了一个Integer类型的StreamA和一个Predicate,该Predicate用于过滤出偶数。然后,我们调用filterStream方法并将StreamA和Predicate作为参数传递给它。最后,我们遍历过滤后的Stream并打印结果。
阅读全文