C'est assez méchant comme objet, je m'explique :
 
J'ai fait un petit programme de test
 
| Code : 
 import java.util.BitSet;public class BitSetTest {	public static void main(String[] args) {  BitSet bits = new BitSet(8);  for (int i = 0; i < 8; i++) {  	if (i % 2 == 0)    bits.clear(i);  	else    bits.set(i);  }  System.out.println("BitSet " + bits);  System.out.println("length: " + bits.length() + ", size: " + bits.size());	}}
 | 
 
La sortie est assez surprenante :
 
| BitSet {1, 3, 5, 7}
length: 8, size: 64
 | 
 
Déjà, le 64 me porte à croire que la méthode size() ne doit pas avoir une très grande utilité, à moins qu'elle ne cache des informations que je n'ai pas sû déceler.
 
Quant à length(), c'est assez piège pour le noter : il renvoit l'index de plus haut "true" + 1, autrement dit, si le dernier bit est à false, il n'en est pas fait mention, bien que pour le programmeur ce false puisse avoir une utilité (c'est mon cas).
 
Voilà.