我有一個Java 8的對象流,我想在給定的謂詞匹配後忽略對象。過濾流直到謂詞
例如:我想保留所有字符串 - 「BREAK」(包括它)。
public List<String> values = Arrays.asList("some", "words", "before", "BREAK", "AFTER");
@Test
public void testStopAfter() {
Stream<String> stream = values.stream();
//how to filter stream to stop at the first BREAK
//stream = stream.filter(s -> "BREAK".equals(s));
final List<String> actual = stream.collect(Collectors.toList());
final List<String> expected = Arrays.asList("some", "words", "before", "BREAK");
assertEquals(expected, actual);
}
由於它是失敗(預期:< [一些,也就是說,之前,BREAK]>但:< [一些,也就是說,之前,BREAK,AFTER]>),如果我去掉過濾器,我只得到「BREAK」
我在想一個有狀態的謂詞(請參閱下面的答案),但如果有更好的解決方案,我會遊蕩嗎?
子流或類似的東西? – awksp
看起來你想從原始流中獲得一個子流。 –
@LuiggiMendoza是一個子流將是非常好的 –