1. Adăugarea unui element la mijlocul (sau la începutul) unei liste

Dacă vrem să inserăm un element în mijlocul listei, iată ce se întâmplă în interiorul listei.

Să presupunem că avem o listă de 11 elemente:

Adăugarea unui element la mijlocul (sau la începutul) unei liste

Vrem să inserăm numărul 10.000 în lista de la indexul 5. Pentru a face acest lucru, trebuie doar să executăm:

list.add(5, 10000);

Unde listeste o ArrayListvariabilă. Metoda add(int index, type value)adaugă valoarea 10000 la poziția 5 din listă. Iată ce se întâmplă în add()metodă:

Pasul 1: Toate elementele matricei, începând din a 5-a poziție, vor fi deplasate (copiate) cu 1 element spre sfârșitul matricei:

Adăugarea unui element la mijlocul (sau la începutul) unei liste 1

Rețineți că elementele din celula a 5-a și a 6-a a matricei sunt acum aceleași.

Pasul 2: scrieți valoarea 10.000 în a 5-a celulă:

Adăugarea unui element la mijlocul (sau la începutul) unei liste 2

Acum lista conține toate elementele matricei, iar a cincea celulă conține numărul 10.000. Exact ce ne-am dorit.



2. Eliminarea unui element dintr-o listă

Eliminarea unui element dintr-o listă este similară cu inserarea lui, dar procesul este invers.

Să eliminăm al treilea element dintr-o listă. Pentru a face acest lucru, trebuie să executăm:

list.remove(3);

Iată ce se întâmplă în metoda remove():

Pasul 1: Elementele matricei, începând din a 4-a poziție, vor fi deplasate (copiate) cu 1 element către începutul matricei:

Eliminarea unui element dintr-o listă

Pasul 2: Valoarea variabilei sizeva fi redusă cu 1.

Eliminarea unui element dintr-o listă 2

Vă rugăm să rețineți că există câteva valori colorate cu gri la sfârșitul matricei. Din punct de vedere tehnic, acestea sunt gunoi. Acestea trebuie îndepărtate pentru a nu interfera cu colectarea gunoiului .

Pasul 3: Curățarea gunoiului

Eliminarea unui element dintr-o listă 3



3. Exemple practice de lucru cu o listă în Java

Să scriem câteva exemple de lucru cu liste:

Vom enumera toate numerele pare din intervalul de la 1 la 20:

Cod Note
ArrayList<Integer> list = new ArrayList<Integer>();

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

Buclă peste toți indicii 1la 20
Dacă indexul este divizibil cu 2fără rest,
adăugați-l la listă

Acum să afișăm toate elementele listei pe ecran:

Cod Note
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ți un obiect listă
Buclă peste toți indicii 1la 20

Dacă numărul este divizibil cu 2fără rest,
adăugați-l la listă

Buclă de la zero la dimensiunea listei
Afișați fiecare element pe ecran

Îndepărtarea elementelor:

Acum să eliminăm toate elementele care sunt divizibile cu 4. Rețineți că după eliminarea unui element din listă, pozițiile elementelor rămase se schimbă imediat.

Cod Note
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ți un obiect listă

Buclă peste toți indicii 1la 20
Dacă indexul este divizibil cu 2fără rest,
adăugați-l la listă

Buclă de la zero la dimensiunea listei
Dacă un element al listei este divizibil cu 4fără rest:

a) eliminați elementul
b) micșorați icontorul astfel încât obținem același indice la următoarea iterație a buclei

Să presupunem că trebuie să eliminați ultimele 3 elemente dintr-o listă.

Iată cum să faci asta incorect:

Cod Note
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ți un obiect listă

Lista are 10 elemente: 2, 4, 6, ... 20



n = 10
n - 3 = 7(au rămas 9 elemente în listă)
n - 2 = 8(au rămas 8 elemente în listă)
n - 1 = 9(au rămas 7 elemente în listă)

După eliminarea elementelor 7 și 8, în listă vor rămâne doar 8 elemente. Aceasta înseamnă că nu va fi posibilă ștergerea celui de-al 9-lea element - va apărea o eroare în program.

Iată modalitatea corectă de a elimina elementele:

Opțiunea 1 Opțiunea 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);

Elementele trebuie îndepărtate fie de la capăt, fie dintr-o altă locație consistentă, deoarece elementele sunt deplasate cu unul după fiecare operație de îndepărtare.