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)'。一些第三方庫也提供這種方法。 –