java8写一个共通方法:对于StreamA,将满足复数个skip条件的数据skip掉,生成新的Stream输出。已知StreamA已经按照skip排好序了,要求符合以流的形式边读边写的思想,输出的Stream保持原来的顺序
时间: 2024-03-12 16:45:26 浏览: 111
Java 8 之 流(Stream)
可以使用Stream的filter和count方法来实现这个共通方法。代码如下:
```java
public static <T> Stream<T> skipMulti(Stream<T> stream, int... skips) {
int[] sortedSkips = Arrays.stream(skips).sorted().toArray();
AtomicInteger skipIndex = new AtomicInteger();
return stream.filter(e -> {
int currentIndex = skipIndex.get();
if (currentIndex < sortedSkips.length && skipIndex.incrementAndGet() == sortedSkips[currentIndex]) {
return false;
}
return true;
}).sequential();
}
```
这个方法接受一个Stream和一个或多个skip条件,将满足这些条件的元素skip掉,生成新的Stream输出。为了保持顺序,需要将Stream设置为sequential()模式。
阅读全文