为什么特征方法为Collector返回一个枚举,而为Spliterator返回一个int?

时间:2015-08-06 14:34:15

标签: java lambda java-8 java-stream

Java 8 中,收集器 Spliterator 虽然没有直接关系,但它们都有characteristics()方法,似乎服务于同一个目的。

为什么收藏家中的characteristics()方法会返回enum,但 Spliterator 会返回int(也许是C-风格enum)?它们似乎不一致。

1 个答案:

答案 0 :(得分:1)

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

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

它们也经过了很多修改,在构建流管道时添加或删除了特性,这可以通过二元算法以低成本实现。

int flags简直便宜。