2
有什么办法可以做类似于Stream.skip(long)的事情,但是使用Predicate而不是确切的数字吗?Java 8 Stream.skip with Predicate
我需要跳过元素,直到有一个给定的ID,然后我需要继续应用过滤器,限制等任何建议?
有什么办法可以做类似于Stream.skip(long)的事情,但是使用Predicate而不是确切的数字吗?Java 8 Stream.skip with Predicate
我需要跳过元素,直到有一个给定的ID,然后我需要继续应用过滤器,限制等任何建议?
我怀疑你需要写一个状态谓语或使用包装像
public class FromPredicate<T> implements Predicate<T> {
boolean started = false;
Predicate<T> test;
FromPredicate(Predicate<T> test) { this.test = test; }
public static Predicate<T> from(Predicate<T> test) { return new Predicate<>(test); }
public boolean test(T t) {
return started || (started = test.test(t));
}
}
在Stream
那么你可以做
Stream.of(1,2,3,4,5)
.filter(from(i -> i % 2 == 0)))
.forEach(System.out::println);
应打印
2
3
4
5
请写出具体代码问题。遵循教程http://stackoverflow.com/help/how-to-ask – SkyWalker
您需要一个仅在Java-9中添加的'dropWhile(Predicate)'。一些第三方库也提供这种方法。 –