Is there a use case for the size() method on the java.util.BitSet class?
I mean - the JavaDoc clearly says it\'s implementation dependant, it returns the size of the int
I realized BitSet was introduced in Java 1.0 while the Collections framework with most of the classes we use was introduced in Java 1.2.
Correct.
So basically it seems to me that size() is kept because of legacy reasons and there's no real use for it.
Yes, pretty much.
The other "size" method is length()
which gives you the largest index at which a bit is set. From a logical perspective, length()
is more useful than size()
... but length()
was only introduced in Java 1.2.
The only (hypothetical) use-case I can think of where size()
might be better than length()
is when:
In that case, size()
is arguably better than length()
because it is a cheaper call. (Look at the source code ...) But that's pretty marginal.
(I guess, another use-case along similar lines is when you are creating a new BitSet
and preallocating it based on the size()
of an existing BitSet
. Again, the difference is marginal.)
But you are right about compatibility. It is clear that they could not either get rid of size()
or change its semantics without creating compatibility problems. So they presumably decided to leave it alone. (Indeed, they didn't even see the need to deprecate it. The "harm" in having a not-particularly-useful method in the API is minimal.)