为什么不的BitSet可迭代?

问题描述 投票:9回答:4

BitSetstream()方法,但它没有实现像其他类型提供此方法的Iterable接口。是否有此特殊原因?

java iterable bitset
4个回答
8
投票

Iterable方法(foreachiteratorspliterator)没有在BitSet提供。有一个在stream()没有Iterable方法。

此外stream()BitSet方法不返回在比特组的比特流,但在返回其值被设定的位的索引(其种混淆TBH)的流。因此,从技术上来说似乎是几乎毫无共同之处Iterable


4
投票

原因之一(不是全部原因,也许)是Iterable会低效,因为位指标均将盒装(*);流能够使用原始的整数。

有迭代位集而不使用Iterable,如Javadoc中所述的有效途径,所以它不是真的有必要。


(*)然而,对于具有大小为128或更小的位集,拳击将是便宜的,因为高速缓存的盒装实例将被使用。


3
投票

BitSet不是Java集合框架的“真实”的成员,所以在技术上,没有必要实施Collection.iterator()并提供一个。

public class BitSet implements Cloneable, java.io.Serializable 

更重要的是,无论是生病配合在一起。

位集合是不是通用的,不像java.util.Iterator的; BitSet中提供了特殊功能的副作用和随机寻址,不像迭代器特别的方法。


-1
投票

大概是为了避免昂贵的拳击每一位到Boolean实例。

利用自身的API将避免所有分配循环执行它。

© www.soinside.com 2019 - 2024. All rights reserved.