报告IMMUTABLE或CONCURRENT的分隔符,确保永远不会抛出ConcurrentModificationException。的 当然,CONCURRENT在语义上排除了SIZED,但没有 客户代码的后果。
实际上,这些特性在Stream中没有使用 API,因此,不一致地使用它们将永远不会引起注意 某个地方。
这也是为什么每个中间操作都具有 清除CONCURRENT,IMMUTABLE和NONNULL的效果 特征:Stream实施不使用它们及其 表示流状态的内部类不维护它们。
如果流不使用源代码的特性,那么流如何并行工作?流是否完全忽略了流源特性?
from this question 收集器不知道im正在使用供应商提供的并发收集,因此无法从收集器容器的类型推断出特征
答案 0 :(得分:6)
您要的可能是。这些答案的正确说法是,暂时忽略这些属性,将来可能会被流实现注入/读取/使用。
也在您的评论中说:
someTreeSet().stream()
.sorted()
.... some other operations
将致电sorted
。这是完全不正确的,在这种情况下,该操作将不会被调用。这是一个不被TreeSet
忽略并注入到流隐含中的流标志。