a spliterator reporting either, IMMUTABLE or CONCURRENT, is guaranteed to never throw a ConcurrentModificationException. Of course, CONCURRENT precludes SIZED semantically, but that has no consequence to the client code.
其实这些特性并没有用于Stream中的任何东西 API,因此,不一致地使用它们永远不会引起注意 某处。
这也是为什么每个中间操作都有 清除 CONCURRENT、IMMUTABLE 和 NONNULL 的效果 特点:Stream 实现不使用它们及其 表示流状态的内部类不维护它们。
如果流不使用来自源的特征,那么流如何并行工作?流是否完全忽略了流源特性?
from this question 收集器不知道我正在使用供应商提供的并发收集,因此无法从收集器容器的类型中推断出特征
- 在什么情况下 Stream API 会考虑特征?
- 哪个操作会重置哪些特征?
最佳答案
您所要求的是可能的。这些答案中的正确措辞是,目前那些属性被忽略,在将来它们可能被流实现注入(inject)/读取/使用。
在您的评论中,您还说:
someTreeSet().stream()
.sorted()
.... some other operations
将调用sorted
。这根本不是真的,在这种情况下,不会调用该操作。这是一个流标志,它不会被 TreeSet
忽略并注入(inject)到流实现中。
关于java - 流是否使用流源的特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52368519/