流是否使用流源的特征?

时间:2018-09-17 13:08:07

标签: java java-8 java-stream

from this question

  
    

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

  
     

实际上,这些特性在Stream中没有使用   API,因此,不一致地使用它们将永远不会引起注意   某个地方。

     

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

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

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

  1. 在什么情况下流API会考虑特征?
  2. 哪个操作会重置哪些特征?

1 个答案:

答案 0 :(得分:6)

您要的可能是。这些答案的正确说法是,暂时忽略这些属性,将来可能会被流实现注入/读取/使用。

也在您的评论中说:

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

将致电sorted。这是完全不正确的,在这种情况下,该操作将不会被调用。这是一个不被TreeSet忽略并注入到流隐含中的流标志。