from this question


保证报告IMMUTABLE或CONCURRENT的分隔符永远不会抛出ConcurrentModificationException。的
当然,CONCURRENT会在语义上排除SIZED,但这没有
客户端代码的后果。


实际上,这些特性并未在Stream中用于任何用途
API,因此,不一致地使用它们将永远不会引起注意
某处。

这也解释了为什么每个中间操作都具有
清除CONCURRENT,IMMUTABLE和NONNULL的效果
特征:Stream实现不使用它们及其
表示流状态的内部类不维护它们。

如果流不使用源中的CHARACTERISTICS,那么流如何并行工作?流是否完全忽略了流源特性?

from this question收集器不知道im正在使用供应商提供的并发收集,因此无法从收集器容器的类型推断出特征

  • 在什么情况下流API认为特征?
  • 哪个操作可以重置哪些特征?
  • 最佳答案

    您所要求的是可能的。这些答案的正确说法是,在忽略这些属性的那一刻,在某些将来,它们可能会被流实现注入/读取/使用。

    同样在您的评论中,您说:

    someTreeSet().stream()
             .sorted()
             .... some other operations
    

    将调用sorted。这是不正确的,在这种情况下,该操作将不会被调用。这是一个流标志,它不会被TreeSet忽略并注入到流实现中。

    关于java - 流是否使用流源的特征?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52368519/

    10-10 18:24
    查看更多