Se non vi piace utilizzando il proprio ciclo e il metodo lista add
direttamente poi c'è un altro modo. Crea il tuo ArrayList
con il numero di elementi che si desidera direttamente in questo modo:
final int MAX_ELEMENTS = 1000;
List<Integer> myList = new ArrayList<Integer>(
Collections.<Integer>nCopies(MAX_ELEMENTS, null));
Oppure, se si dispone già di una lista che si desidera espandere la dimensione da n
elementi:
myList.addAll(Collections.<Integer>nCopies(n, null));
(Nota, ho presunto qui che l'elenco sarebbe in possesso di oggetti Integer
, ma è possibile modificare questo al tipo personalizzato. Se lavori con i tipi raw/pre-Java 5, rilascia le dichiarazioni generiche.)
Come per la tua domanda attuale: capacità! = Contenuto. Un ArrayList internamente ha sia una matrice fisica che un conteggio di ciò che è effettivamente contenuto. Aumentando la capacità, cambia l'array interno in modo che possa contenere molti elementi, tuttavia il conteggio non cambia. È necessario aggiungere elementi per aumentare tale conteggio.
D'altra parte, se si sta solo cercando di impostare elementi specifici e conoscere il massimo che si desidera utilizzare, perché non utilizzare direttamente un array? Se è quindi necessario passare questo array a un'API che impiega List
s, utilizzare Arrays.asList
. Le altre classi potrebbero comunque modificare il contenuto dell'array di backup, ma non sarebbe in grado di aumentarne le dimensioni o la capacità.
fonte
2010-05-10 01:15:03
Questa sarebbe la soluzione più pulita ma ArrayList viene utilizzato come argomento in un metodo che richiede solo ArrayList. Forse se ho abbastanza tempo lo sovraccarico per l'utilizzo di Map insted. –
Si potrebbe anche prendere in considerazione il caricamento di una mappa e quindi scrivere un metodo per creare un ArrayList dal contenuto della mappa dopo il caricamento. Ma se hai davvero bisogno di un ArrayList, la soluzione postata da Bozho potrebbe andar bene. –
"l'ArrayList viene utilizzato come argomento in un metodo che richiede solo ArrayList" Seriamente? C'è del codice là fuori che richiede 'ArrayList' piuttosto che' List'? – Powerlord