1. Wstawienie elementu w środku (lub na początku) listy

Jeśli chcemy wstawić element na środku listy, dzieje się to wewnątrz listy.

Załóżmy, że mamy listę 11 elementów:

Wstawianie elementu w środku (lub na początku) listy

Chcemy wstawić liczbę 10 000 na listę pod numerem 5, w tym celu wystarczy uruchomić polecenie:

list.add(5, 10000);

Gdzie list jest zmienną typu ArrayList, metoda add(int index, тип value)dodaje wartość 10000 na pozycję 5 na liście. Oto, co dzieje się w metodzie add():

Krok 1: wszystkie elementy tablicy począwszy od piątego zostaną przesunięte (skopiowane) o 1 element na koniec tablicy:

Wstawianie elementu w środku (lub na początku) listy 1

Zauważ, że elementy w piątej i szóstej komórce tablicy są teraz takie same.

Krok 2: wpisujemy wartość 10 000 w piątej komórce:

Wstawianie elementu w środku (lub na początku) listy 2

Teraz lista zawiera wszystkie elementy tablicy, a piąta komórka zawiera liczbę 10 000. Tak jak chcieliśmy.



2. Usunięcie pozycji z listy

Operacja usunięcia elementu z listy jest podobna do jego wstawienia, tylko proces jest odwrotny.

Usuńmy element o indeksie 3 z listy, w tym celu musimy wykonać polecenie:

list.remove(3);

Oto, co dzieje się w metodzie remove():

Krok 1: elementy tablicy począwszy od czwartego zostaną przesunięte (skopiowane) o jedną pozycję bliżej początku tablicy:

Usuwanie pozycji z listy 1

Krok 2: Wartość zmiennej sizezostanie zmniejszona o 1.

Usuwanie elementu z listy 2

Należy pamiętać, że na końcu tablicy, który jest zaznaczony na szaro, znajdują się pewne wartości. Technicznie to śmieci. Należy go usunąć, aby nie zakłócał procesu wyrzucania elementów bezużytecznych .

Krok 3: Usuń śmieci

Usuwanie elementu z listy 3



3. Praktyczne przykłady pracy z listą w Javie

Napiszmy kilka przykładów pracy z listami:

Wypisz wszystkie liczby parzyste od 1 do 20:

Kod Notatki
ArrayList<Integer> list = new ArrayList<Integer>();

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

pętlę obiektu listy przez wszystkie liczby 1.. 20
jeśli liczba jest podzielna przez 2bez reszty,
dodaj ją do listy

A teraz wyświetlimy wszystkie elementy listy na ekranie:

Kod Notatki
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));
Utwórz
pętlę obiektu listy na wszystkich liczbach 1.. 20

jeśli liczba jest podzielna przez 2brak reszty
dodaj ją do

pętli listy od zera do rozmiaru listy
wyświetl każdy element na ekranie

Usuwanie elementów:

Teraz usuńmy wszystkie elementy, które są podzielne przez 4. Zauważmy, że natychmiast po usunięciu jednego elementu z listy zmieniają się pozycje pozostałych elementów.

Kod Notatki
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--;
   }
Utwórz obiekt listy

, aby przeglądać wszystkie liczby 1. 20
Jeśli liczba nie dzieli się przez 2żadną resztę,
dodaj ją do listy.

przejdź od zera do rozmiaru listy,
jeśli element listy jest podzielny przez 4bez reszty:

a) usuń element
b) zmniejsz licznik itak, aby przy następnej iteracji pętli ponownie dostać się do tego samego elementu

Powiedzmy, że musisz usunąć ostatnie 3 elementy listy.

Jak zrobić to źle:

Kod Notatki
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);
Utwórz obiekt listy

na liście 10 pozycji: 2, 4, 6, ... 20



n = 10
n - 3 = 7(9 pozycji pozostało na liście)
n - 2 = 8(8 pozycji pozostało na liście)
n - 1 = 9(7 pozycji pozostało na liście)

Po usunięciu 7 i 8 elementów na liście pozostanie tylko 8 elementów. Dlatego nie można usunąć dziewiątego elementu - wystąpi błąd w programie.

Jak usunąć elementy:

opcja 1 Opcja 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);

Elementy należy usunąć albo od końca, albo po prostu w tym samym miejscu, a po każdym usunięciu elementy zostaną przesunięte o jeden.