stream流的注意事项
小于 1 分钟函数式编程stream流
- 惰性求值:如果没有终结操作,中间操作是不会得到执行的。
- 流是一次性的:一旦一个流对象经过一个终结操作之后,这个流就不能再被使用。
- 不会影响原数据:我们在流中可以对数据做很多处理,但是正常情况下是不会影响原来集合中的元素。
流的一次性
public static void main(String[] args) {
List<Author> authors = getAuthors();
Stream<Author> stream = authors.stream();
stream.forEach(author -> System.out.println(author.getName()));
Optional<Author> first = stream.findFirst();
}
蒙多
亚拉索
易
易
Exception in thread "main" java.lang.IllegalStateException: stream has already been operated upon or closed
at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:229)
at java.util.stream.ReferencePipeline.findFirst(ReferencePipeline.java:464)
at com.sanfen.StreamDemo01.main(StreamDemo01.java:28)
Process finished with exit code 1