1. Aggiunta di un elemento al centro (o all'inizio) di un elenco

Se vogliamo inserire un elemento al centro della lista, ecco cosa succede all'interno della lista.

Supponiamo di avere una lista di 11 elementi:

Aggiunta di un elemento al centro (o all'inizio) di un elenco

Vogliamo inserire il numero 10.000 nella lista all'indice 5. Per fare ciò, dobbiamo solo eseguire:

list.add(5, 10000);

Dove listè una ArrayListvariabile. Il add(int index, type value)metodo aggiunge il valore 10000 alla posizione 5 nell'elenco. Ecco cosa succede nel add()metodo:

Passaggio 1: tutti gli elementi dell'array, a partire dalla quinta posizione, verranno spostati (copiati) di 1 elemento verso la fine dell'array:

Aggiunta di un elemento al centro (o all'inizio) di un elenco 1

Si noti che gli elementi nella quinta e nella sesta cella dell'array ora sono gli stessi.

Passaggio 2: scrivi il valore 10.000 nella quinta cella:

Aggiunta di un elemento al centro (o all'inizio) di una lista 2

Ora l'elenco contiene tutti gli elementi dell'array e la quinta cella contiene il numero 10.000. Proprio quello che volevamo.



2. Rimozione di un elemento da un elenco

La rimozione di un elemento da un elenco è simile all'inserimento, ma il processo è inverso.

Rimuoviamo il terzo elemento da un elenco. Per fare ciò, dobbiamo eseguire:

list.remove(3);

Ecco cosa succede nel metodo remove():

Passaggio 1: gli elementi dell'array, a partire dalla 4a posizione, verranno spostati (copiati) di 1 elemento verso l'inizio dell'array:

Rimozione di un elemento da un elenco

Passaggio 2: il valore della sizevariabile verrà ridotto di 1.

Rimozione di un elemento da una lista 2

Si noti che alcuni valori sono colorati in grigio alla fine dell'array. Tecnicamente, questi sono spazzatura. Devono essere rimossi per non interferire con la raccolta dei rifiuti .

Passaggio 3: ripulire la spazzatura

Rimozione di un elemento da una lista 3



3. Esempi pratici di utilizzo di un elenco in Java

Scriviamo alcuni esempi di lavoro con le liste:

Elencheremo tutti i numeri pari nell'intervallo da 1 a 20:

Codice Appunti
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);
Crea un oggetto elenco

Passa su tutti gli indici 1a 20
Se l'indice è divisibile per 2senza resto,
aggiungilo all'elenco

Ora visualizziamo sullo schermo tutti gli elementi della lista:

Codice Appunti
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   System.out.println(list.get(i));
Crea un oggetto elenco
Ripeti su tutti gli indici 1fino a 20

Se il numero è divisibile per 2senza resto,
aggiungilo all'elenco

Ripeti da zero alla dimensione dell'elenco
Visualizza ogni elemento sullo schermo

Rimozione di elementi:

Ora rimuoviamo tutti gli elementi divisibili per 4. Si noti che dopo aver rimosso un elemento dall'elenco, le posizioni degli elementi rimanenti cambiano immediatamente.

Codice Appunti
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   if (list.get(i)%4 == 0)
   {
      list.remove(i);
      i--;
   }
Crea un oggetto lista

Ripeti su tutti gli indici 1a 20
Se l'indice è divisibile per 2senza resto,
aggiungilo alla lista

Ripeti da zero alla dimensione della lista
Se un elemento della lista è divisibile 4senza resto:

a) rimuovi l'elemento
b) diminuisce il icontatore in modo da ottenere lo stesso indice alla successiva iterazione del ciclo

Diciamo che devi rimuovere gli ultimi 3 elementi da un elenco.

Ecco come farlo in modo errato:

Codice Appunti
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

int n = list.size();
list.remove(n - 3);
list.remove(n - 2);
list.remove(n - 1);
Crea un oggetto lista

La lista ha 10 elementi: 2, 4, 6, ... 20



n = 10
n - 3 = 7(ci sono 9 elementi rimasti nella lista)
n - 2 = 8(ci sono 8 elementi rimasti nella lista)
n - 1 = 9(ci sono 7 elementi rimasti nella lista)

Dopo aver rimosso il 7° e l'8° elemento, nell'elenco rimarranno solo 8 elementi. Ciò significa che non sarà possibile eliminare il nono elemento: si verificherà un errore nel programma.

Ecco il modo giusto per rimuovere gli elementi:

opzione 1 opzione 2
int n = list.size();
list.remove(n - 3);
list.remove(n - 3);
list.remove(n - 3);
int n = list.size();
list.remove(n - 1);
list.remove(n - 2);
list.remove(n - 3);

Gli elementi devono essere rimossi dall'estremità o da un'altra posizione coerente, poiché gli elementi vengono spostati di uno dopo ogni operazione di rimozione.