from this question
保证报告IMMUTABLE或CONCURRENT的分隔符永远不会抛出ConcurrentModificationException。的
当然,CONCURRENT会在语义上排除SIZED,但这没有
客户端代码的后果。
实际上,这些特性并未在Stream中用于任何用途
API,因此,不一致地使用它们将永远不会引起注意
某处。
这也解释了为什么每个中间操作都具有
清除CONCURRENT,IMMUTABLE和NONNULL的效果
特征:Stream实现不使用它们及其
表示流状态的内部类不维护它们。
如果流不使用源中的CHARACTERISTICS,那么流如何并行工作?流是否完全忽略了流源特性?
from this question收集器不知道im正在使用供应商提供的并发收集,因此无法从收集器容器的类型推断出特征
最佳答案
您所要求的是可能的。这些答案的正确说法是,在忽略这些属性的那一刻,在某些将来,它们可能会被流实现注入/读取/使用。
同样在您的评论中,您说:
someTreeSet().stream()
.sorted()
.... some other operations
将调用
sorted
。这是不正确的,在这种情况下,该操作将不会被调用。这是一个流标志,它不会被TreeSet
忽略并注入到流实现中。关于java - 流是否使用流源的特征?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52368519/