Non sono troppo preoccupato dell'efficienza temporale (l'operazione sarà rara), ma piuttosto dell'efficienza della memoria: È possibile far crescere l'array senza disporre temporaneamente di tutti i valori due volte?La maggior parte della memoria efficiente per far crescere un array in Java?
Esiste un modo più efficiente di far crescere un array di grandi dimensioni piuttosto che crearne uno nuovo e copiare tutti i valori? Come, concatenandolo con uno nuovo?
Che dire di avere array di dimensioni fisse memorizzati in un altro array e riallocarlo/copiarne uno di livello superiore? Questo lascerebbe i valori attuali sul posto?
Sono a conoscenza di ArrayList, ma ho bisogno di molto controllo sull'accesso all'array e l'accesso deve essere molto veloce. Ad esempio, penso di preferire a[i]
a al.get(i)
.
Il motivo principale per cui mi interessa è che la matrice in questione (o un numero di tali matrici) potrebbe benissimo occupare una porzione abbastanza grande di memoria principale che la solita strategia di creare una copia di dimensioni doppie prima di scartare la l'originale potrebbe non funzionare. Ciò potrebbe significare che devo riconsiderare la strategia generale (o aumentare i miei consigli sull'hardware).
Bella domanda! Mi piace – vpram86
qual è il problema con il modo in cui ArrayList funziona? – Zed
cosa c'è di sbagliato in ArrayList? – Robert