CodeGym /Cursuri /All lectures for RO purposes /Lucrul cu ArrayList, partea 2

Lucrul cu ArrayList, partea 2

All lectures for RO purposes
Nivel , Lecţie
Disponibil

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.


Comentarii
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION