1. Tilføjelse af et element til midten (eller i begyndelsen) af en liste

Hvis vi ønsker at indsætte et element i midten af ​​listen, er her, hvad der sker inde i listen.

Antag, at vi har en liste med 11 elementer:

Tilføjelse af et element til midten (eller i begyndelsen) af en liste

Vi ønsker at indsætte tallet 10.000 i listen ved indeks 5. For at gøre dette skal vi blot udføre:

list.add(5, 10000);

Hvor lister en ArrayListvariabel. Metoden add(int index, type value)tilføjer værdien 10000 på position 5 i listen. Her er hvad der sker i add()metoden:

Trin 1: Alle elementer i arrayet, startende fra den 5. position, vil blive flyttet (kopieret) med 1 element mod slutningen af ​​arrayet:

Tilføjelse af et element til midten (eller i begyndelsen) af en liste 1

Bemærk, at elementerne i 5. og 6. celle i arrayet nu er de samme.

Trin 2: Skriv værdien 10.000 i den 5. celle:

Tilføjelse af et element til midten (eller i begyndelsen) af en liste 2

Nu indeholder listen alle elementerne i arrayet, og den femte celle indeholder tallet 10.000. Lige hvad vi ønskede.



2. Fjernelse af et element fra en liste

At fjerne et element fra en liste svarer til at indsætte det, men processen er omvendt.

Lad os fjerne det 3. element fra en liste. For at gøre dette skal vi udføre:

list.remove(3);

Her er, hvad der sker i remove()-metoden:

Trin 1: Elementerne i arrayet, startende fra den 4. position, vil blive flyttet (kopieret) med 1 element mod starten af ​​arrayet:

Fjernelse af et element fra en liste

Trin 2: Værdien af ​​variablen sizevil blive reduceret med 1.

Fjernelse af et element fra en liste 2

Bemærk venligst, at der er nogle værdier farvet grå i slutningen af ​​arrayet. Teknisk set er disse skrald. De skal fjernes for ikke at forstyrre affaldsindsamlingen .

Trin 3: Oprydning af affald

Fjernelse af et element fra en liste 3



3. Praktiske eksempler på arbejde med en liste i Java

Lad os skrive nogle eksempler på at arbejde med lister:

Vi viser alle de lige tal i området fra 1 til 20:

Kode Noter
ArrayList<Integer> list = new ArrayList<Integer>();

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

Loop over alle indekserne 1til 20
Hvis indekset er deleligt med 2uden en rest,
føj det til listen

Lad os nu vise alle elementerne i listen på skærmen:

Kode Noter
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));
Opret et listeobjekt
Loop over alle indekserne 1til 20

Hvis tallet er deleligt med 2uden en rest,
føj det til listen

Loop fra nul til listens størrelse
Vis hvert element på skærmen

Fjernelse af elementer:

Lad os nu fjerne alle elementer, der er delelige med 4. Bemærk, at efter at have fjernet et element fra listen, ændres placeringen af ​​de resterende elementer med det samme.

Kode Noter
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--;
   }
Opret et listeobjekt

Loop over alle indekserne 1til 20
Hvis indekset er deleligt med 2uden en rest,
tilføjes det til listen

Loop fra nul til listens størrelse
Hvis et element på listen er deleligt med 4uden en rest:

a) fjern elementet
b) mindske itælleren, så vi får samme indeks ved næste iteration af løkken

Lad os sige, at du skal fjerne de sidste 3 elementer fra en liste.

Sådan gør du det forkert:

Kode Noter
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);
Opret et listeobjekt

Listen har 10 elementer: 2, 4, 6, ... 20



n = 10
n - 3 = 7(der er 9 elementer tilbage på listen)
n - 2 = 8(der er 8 elementer tilbage på listen)
n - 1 = 9(der er 7 elementer tilbage på listen)

Efter at have fjernet det 7. og 8. element, vil kun 8 elementer være tilbage på listen. Det betyder, at det ikke vil være muligt at slette det 9. element - der vil opstå en fejl i programmet.

Her er den rigtige måde at fjerne elementerne på:

Mulighed 1 Mulighed 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);

Elementerne skal fjernes enten fra enden eller fra et andet ensartet sted, da elementerne bliver forskudt med én efter hver fjernelsesoperation.