2017-01-24 55 views

回答

7

BitSet中沒有提供Iterableforeach,iteratorspliterator)中的方法。 Iterable中沒有stream()方法。

另外的BitSetstream()方法不返回在比特組的比特流,但在其值被設置中的比特的索引返回流(這是種混淆TBH)。因此,從技術上講,與Iterable似乎幾乎沒有什麼共同之處。

+0

哦,好點。我會編輯我的問題。 –

-1

大概是爲了避免昂貴的拳擊每一位到Boolean實例。

使用其自己的API進行循環將避免所有分配。

+0

可能是一個簡單的我猜 –

+1

@fabienbk:不; Java不支持原始泛型。 – SLaks

+2

拳擊布爾真的很便宜:只有兩個,他們被緩存。 'stream'返回表示設置的位索引的'int';我認爲OP期望'Iterable'執行相同的操作(除了'Integer')。 –

3

BitSet不是java收集框架的「真實」成員,所以在技術上,不需要實現Collection.iterator()並提供一個。

public class BitSet implements Cloneable, java.io.Serializable 

更重要的是,兩者都是不合適的。

BitSet不是通用,不像java.util.Iterator;與Iterator不同,BitSet爲特殊方法提供了特殊功能,用於副作用和隨機尋址。

3

一個原因(不是全部原因,也許)是Iterable效率低下,因爲位索引必須裝盒;該流可以使用原始整數。

如Javadoc中所述,有一種迭代比特集的有效方法,不需要使用Iterable,所以它不是必需的。

相關問題