java - 流是否使用流源的特征?

标签 java java-8 java-stream

from this question

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 收集器不知道我正在使用供应商提供的并发收集,因此无法从收集器容器的类型中推断出特征

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

最佳答案

您所要求的可能的。这些答案中的正确措辞是,目前那些属性被忽略,在将来它们可能被流实现注入(inject)/读取/使用。

在您的评论中,您还说:

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

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

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

相关文章:

java - Java 中的 Web 浏览器控制?

java - do-while with Java8-Optional

java - 在 Java 8 中使用函数式接口(interface)作为 filter() 函数的参数

java - 有什么办法可以简化这个流表达式吗?

java - 迭代数组 char[26] 时减去 char 'a'

java - 有没有办法知道访问字节码时使用 `new` 创建了哪些类?

java - 如何在 Spring Boot 中加载和遍历属性文件

java - 如何使用 Java 8 Lambda 表达式将一种类型的列表转换为其子类型的列表

java 8根据属性比较2个列表

java - 在java中生成最小项的总和