Java 8 流何时被视为已使用?
2022-09-02 20:36:35
我的理解是,一旦执行了终端操作(例如 or ),Java 8 就被视为被使用。Stream
forEach()
count()
但是,下面的测试用例抛出一个 even,尽管是一个惰性的中间操作,只是作为两个语句调用。然而,我可以将两个过滤器操作链接到一个语句中,并且它可以工作。multipleFilters_separate
IllegalStateException
filter
@Test(expected=IllegalStateException.class)
public void multipleFilters_separate() {
Stream<Double> ints = Stream.of(1.1, 2.2, 3.3);
ints.filter(d -> d > 1.3);
ints.filter(d -> d > 2.3).forEach(System.out::println);
}
@Test
public void multipleFilters_piped() {
Stream<Double> ints = Stream.of(1.1, 2.2, 3.3);
ints.filter(d -> d > 1.3)
.filter(d -> d > 2.3)
.forEach(System.out::println);
}
由此,我假设 a 被视为在使用它的第一个语句之后被使用,无论该语句是否调用终端操作。这听起来对吗?Stream