Есть ли прецедент для метода size() класса java.util.BitSet?
Я имею в виду - JavaDoc ясно говорит, что он зависит от реализации, он возвращает размер внутреннего хранилища long[] в битах. Из того, что он говорит, можно сделать вывод, что вы не сможете установить бит с более высоким индексом, чем size(), но это не так, BitSet может вырасти автоматически:
BitSet myBitSet = new BitSet();
System.out.println(myBitSet.size()); // prints "64"
myBitSet.set(768);
System.out.println(myBitSet.size()); // prints "832"
В каждой отдельной встрече с BitSet, которую я имел в своей жизни, я всегда хотел использовать length(), так как это возвращает логический размер BitSet:
BitSet myBitSet = new BitSet();
System.out.println(myBitSet.length()); // prints "0"
myBitSet.set(768);
System.out.println(myBitSet.length()); // prints "769"
Несмотря на то, что я программировал Java в течение последних 6 лет, эти два метода всегда очень запутывают меня. Я часто смешиваю их и неправильно использую случайно, потому что в моей голове я думаю о BitSet как умном Set<boolean>, где я бы использовал size().
Мне нравится, если ArrayList имеет length(), возвращая число элементов и size() возвращает размер базового массива.
Теперь, есть ли какой-либо прецедент для метода size(), который мне не хватает? Это полезно? Кто-нибудь когда-либо использовал это для чего-нибудь? Может быть, это важно для некоторых ручных бит-скручиваний или чего-то подобного?
EDIT (после нескольких исследований)
Я понял, что BitSet был введен в Java 1.0, тогда как структура Collections с большинством используемых нами классов была введена в Java 1.2. Так что в основном мне кажется, что size() хранится из-за унаследованных причин, и для него нет реального использования. Новые классы Collection не имеют таких методов, в то время как некоторые из старых (Vector, например) делают.