In Java, there is no Array type collection to make arrays feel more
consistent, such as in inheritance.
Certo che esiste, si chiama List<T>
. L'unica differenza fondamentale tra un'ipotetica Array<T>
e List<T>
è che non puoi ridimensionare Array<T>
. Se Array<T>
fosse aggiunto, sarebbe come List<T>
tranne con meno funzionalità e quale sarebbe il punto?
Sometimes it makes sense to have a fixed number of elements, some of
which may not be set at a point in time. You might imagine a row of
cupholders; you can put cups in any position or take them out, but you
can't just add another cupholder.
E puoi farlo con un List<T>
.
List<String> strings = Arrays.asList(new String[45]);
Se non vuoi ridimensionare il tuo perso, non ridimensionare il tuo elenco. Qualsiasi funzionalità aggiuntiva disponibile sulla tua struttura dati che non ti serve non ti fa male.
Tuttavia, avere funzionalità extra può essere un problema quando rende il codice più difficile da ragionare. Prendere in considerazione:
FooResult result = calculateFoo(myList);
Se calculateFoo
prende un'interfaccia che non può ridimensionare myList
, sarà più facile capire cosa fa il codice. So che la lista avrà le stesse dimensioni in seguito. Ma sarebbe ancora meglio se myList fosse immutabile, e quindi saprei che non è cambiato affatto.
Avere una lista di dimensioni fisse non sembra molto utile perché o voglio una lista che posso modificare (nel qual caso avere l'opzione di ridimensionare non fa male), o voglio una lista che non può essere modificata. Un tipo di matrice non si adatta a nessuno scopo.