我需要一种TreeSet
真正快速地计算小于Integers中的X的元素数的方法。
我可以用
subSet()
耳机()
tailSet()
方法,但它们确实很慢(我只需要计数,而不是数字本身)。有办法吗?
谢谢。
编辑:
我发现了一种变通方法,可以使事情更快!我正在使用BitSet及其cardinality()方法。我首先创建一个BitSet,然后为添加到TreeSet中的每个元素设置BitSet中的相应索引。现在,要计算少于XI的元素数量,请使用:
bitset.get(0,X + 1).cardinality()
与treeset.subSet(0,true,X,true).size()相比,这要快得多。
有人知道为什么吗?我假设BitSet.cardinality()不使用线性搜索。