【问题标题】:Why does the characteristics method return an enum for Collector but an int for Spliterator? [duplicate]为什么特征方法为 Collector 返回一个枚举,而为 Spliterator 返回一个 int? [复制]
【发布时间】:2015-08-06 14:34:15
【问题描述】:

Java 8 中,CollectorSpliterator 虽然没有直接关系,但都有一个 characteristics() 方法,它似乎服务于相同的通用目的。

为什么Collector 中的characteristics() 方法返回enum,但Spliterator 中返回int(可能是C 风格的enum)?它们似乎不一致。

【问题讨论】:

    标签: java lambda java-8 java-stream


    【解决方案1】:

    实用程序类Collectors 包含一些静态的、预先分配的、不可修改的各种收集器特性集,这些特性是JDK 提供的收集器特性所必需的。收集器标志只有几种可能的组合,所以这很容易做到。

    另一方面,有许多分离器来源。在集合中编码许多可能的特征组合可能被认为成本太高。特别是如果某些实施者可能会选择动态分配它们。

    它们还进行了很多修改,在构建流管道时添加或删除特性,这可以通过二进制算法廉价地实现。

    int 标志更便宜。

    【讨论】:

      猜你喜欢
      • 2017-06-12
      • 2014-03-31
      • 2013-09-23
      • 2013-02-26
      • 1970-01-01
      • 2020-10-31
      • 2018-06-01
      • 1970-01-01
      • 2013-06-09
      相关资源
      最近更新 更多