Esiste un caso d'uso per il metodo size()
nella classe java.util.BitSet
?Qual è il motivo del metodo size() di BitSet?
Voglio dire - il JavaDoc dice chiaramente che dipende dall'implementazione, restituisce la dimensione della memoria interna long[]
in bit. Da quello che dice, si potrebbe concludere che non sarà in grado di impostare un po 'con un indice superiore a size()
, ma che non è vero, il BitSet
può crescere automaticamente:
BitSet myBitSet = new BitSet();
System.out.println(myBitSet.size()); // prints "64"
myBitSet.set(768);
System.out.println(myBitSet.size()); // prints "832"
in ogni singolo incontro con BitSet
ho avuto nella mia vita, ho sempre voluto usare length()
dal momento che si restituisce la dimensione logica del BitSet
:
BitSet myBitSet = new BitSet();
System.out.println(myBitSet.length()); // prints "0"
myBitSet.set(768);
System.out.println(myBitSet.length()); // prints "769"
Anche se mi è stato di programmazione Java per gli ultimi 6 anni, i due metodi sono sempre molto confondendo per me. Li mescolo spesso e uso quello sbagliato, per inciso, perché nella mia testa, penso a BitSet
come un intelligente Set<boolean>
dove userei size()
.
È come se ArrayList
avesse length()
restituire il numero di elementi e size()
restituire la dimensione dell'array sottostante.
Ora, c'è qualche caso d'uso per il metodo size()
che mi manca? È utile in qualche modo? Qualcuno l'ha mai usato per qualcosa? Potrebbe essere importante per alcuni bit di puntamento manuale o qualcosa di simile?
EDIT (dopo qualche ricerca più)
mi sono reso conto BitSet
è stato introdotto in Java 1.0, mentre il quadro Collezioni con la maggior parte delle classi che usiamo è stato introdotto in Java 1.2. Quindi, in pratica, mi sembra che lo size()
sia mantenuto per ragioni legacy e non ci sia un vero uso per questo. Le nuove classi Collection non hanno questi metodi, mentre alcuni dei vecchi (Vector
, ad esempio) lo fanno.
Sembra come se fossi sulla buona strada, dopo tutto. Aspetterò un po 'di più se qualcuno viene con un uso rivoluzionario per il metodo, ma immagino che il segno di spunta sarà tuo. È un peccato che non lo abbiano deprecato. Mi farebbe risparmiare tempo prezioso nell'usare quello sbagliato. –