Fra*_*ira 1 java collections list java-stream
我只是第一次看到这个,我想知道这是一个很好的做法还是一如既往地视情况而定。
使用流作为域中的属性而不是列表。
public class MyDomain {
Integer id;
Stream<SubDomain> subDomains;
}
Run Code Online (Sandbox Code Playgroud)
不,这不是一个好习惯。创建流是为了支持对元素流的函数式操作(请参阅官方 Javadoc),但不是为了持久化它们。
这是官方 Javadoc 中的另一个很好的引用:
流在几个方面与集合不同: 没有存储。流不是存储元素的数据结构;相反,它通过计算操作的管道传送来自数据结构、数组、生成器函数或 I/O 通道等源的元素。
所以不要将它用作持久集合。
这不是一个好主意,一个流可以被消费一次。将它作为对象中的一个字段将使其可能需要多次消费。为了能够做到这一点,您需要存储集合类(例如 a List),并stream()在需要以流的形式访问其内容时调用其方法。