Penso che sia una domanda abbastanza semplice, ma non riesco a capire come farlo correttamente.
Ho un arraylist vuoto:
ArrayList<object> list = new ArrayList<object>();
Ho alcuni oggetti che voglio aggiungere e ogni oggetto deve essere in una certa posizione. È necessario però che possano essere aggiunti in ogni ordine possibile. Quando provo questo, non funziona e ottengo una IndexOutOfBoundsException
:
list.add(1, object1)
list.add(3, object3)
list.add(2, object2)
Quello che ho provato è riempire la ArrayList
con null
e poi fare quanto sopra. Funziona, ma penso che sia una soluzione orribile. C'è un altro modo per farlo?
Si può fare così:
list.add(1, object1)
list.add(2, object3)
list.add(2, object2)
Dopo aver aggiunto l'oggetto2 alla posizione 2, sposterà l'oggetto3 alla posizione 3.
Se vuoi che l'oggetto3 sia sempre in posizione 3, ti suggerisco di usare una HashMap con la posizione come chiave e l'oggetto come valore.
Se questo è il caso, perché non consideri l'uso di un normale Array, inizializzi la capacità e metti gli oggetti all'indice che vuoi.
Object[] list = new Object[10];
list[0] = object1;
list[2] = object3;
list[1] = object2;
Richiamo la vostra attenzione sulla documentazione di ArrayList.add
, che dice che lancia IndexOutOfBoundsException
- se l'indice è fuori portata (index < 0 || index > size()
)
Controllate il size()
della vostra lista prima di chiamare list.add(1, object1)