在 Java 8 中,收集器和 Spliterator 虽然没有直接关系,但它们都有characteristics()
方法,似乎服务于同一个目的。
为什么收藏家中的characteristics()
方法会返回enum
,但 Spliterator 会返回int
(也许是C-风格enum
)?它们似乎不一致。
答案 0 :(得分:1)
实用程序类Collectors
包含JDK提供的各种收集器特性所需的一些静态的,预分配的不可修改的集合。收集器标志只有几种可能的组合,所以这很容易做到。
另一方面,有许多分裂器来源。对集合中的许多可能的特征组合进行编码可能被认为成本太高。特别是如果某些实施者可能会选择动态分配它们。
它们也经过了很多修改,在构建流管道时添加或删除了特性,这可以通过二元算法以低成本实现。
int flags简直便宜。