英文:
Is it a good practice to use Java Streams in POJO as attributes
问题
我刚第一次看到这个,我想知道这是不是一个好的做法,还是像往常一样,这取决于情况。
在域中将流(Streams)用作属性,而不是列表(List)。
public class MyDomain {
Integer id;
Stream<SubDomain> subDomains;
}
英文:
I just saw this for the first time and I would like to know if this is a good practice or as always it depends.
Using Streams as attributes in the domain instead of a List.
public class MyDomain {
Integer id;
Stream<SubDomain> subDomains;
}
答案1
得分: 10
不,这不是一个好的实践。流(Streams)的创建是为了支持对元素流进行函数式操作(详见官方 Javadoc),而不是为了将它们持久化。
在官方的 Javadoc 中还有另一个好的引用:
流与集合在几个方面不同:
没有存储。流不是存储元素的数据结构;相反,它通过计算操作的管道,从诸如数据结构、数组、生成器函数或I/O通道等来源传递元素。
因此,不要将其用作持久化集合。
英文:
No, that isn't a good practice. Streams have been created to support functional-style operations on streams of elements (see official Javadoc) but not to persist them.
The is an other good quote in the official Javadoc:
> Streams differ from collections in several ways:
> No storage. A stream is not a data structure that stores elements; instead, it conveys elements from a source such as a data structure, an array, a generator function, or an I/O channel, through a pipeline of computational operations.
So don't use it as a persistent collection.
答案2
得分: 8
这不是一个好主意,流(stream)只能被消耗(consumed)一次。将其作为对象字段将使得很可能需要多次消耗它。为了能够做到这一点,您需要存储集合类(例如一个 List
),并在需要将其内容作为流访问时调用其 stream()
方法。
英文:
This is not a good idea, a stream can be consumed once. Having it as a field in an object will make it likely it is necessary to consume more than once. To be able to do that, you need to store the collection class (eg a List
), and call its stream()
method when you need to access its contents as a stream.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论