1. Lägga till ett element i mitten (eller i början) av en lista

Om vi ​​vill infoga ett element i mitten av listan, här är vad som händer i listan.

Anta att vi har en lista med 11 element:

Lägga till ett element i mitten (eller i början) av en lista

Vi vill infoga siffran 10 000 i listan vid index 5. För att göra detta behöver vi bara köra:

list.add(5, 10000);

Var listfinns en ArrayListvariabel. Metoden add(int index, type value)lägger till värdet 10000 vid position 5 i listan. Så här händer i add()metoden:

Steg 1: Alla element i arrayen, från den 5:e positionen, kommer att flyttas (kopieras) med 1 element mot slutet av arrayen:

Lägga till ett element i mitten (eller i början) av en lista 1

Observera att elementen i den 5:e och 6:e cellen i arrayen nu är desamma.

Steg 2: Skriv värdet 10 000 i den femte cellen:

Lägga till ett element i mitten (eller i början) av en lista 2

Nu innehåller listan alla element i arrayen, och den femte cellen innehåller talet 10 000. Precis vad vi ville ha.



2. Ta bort ett element från en lista

Att ta bort ett element från en lista liknar att infoga det, men processen är omvänd.

Låt oss ta bort det tredje elementet från en lista. För att göra detta måste vi köra:

list.remove(3);

Så här händer i remove()-metoden:

Steg 1: Elementen i arrayen, med start från den 4:e positionen, kommer att flyttas (kopieras) med 1 element mot början av arrayen:

Ta bort ett element från en lista

Steg 2: Variabelns värde sizekommer att minskas med 1.

Ta bort ett element från en lista 2

Observera att det finns några värden som är färgade grå i slutet av arrayen. Tekniskt sett är dessa skräp. De måste tas bort för att inte störa sophämtningen .

Steg 3: Rensa sopor

Ta bort ett element från en lista 3



3. Praktiska exempel på att arbeta med en lista i Java

Låt oss skriva några exempel på hur man arbetar med listor:

Vi listar alla jämna tal i intervallet 1 till 20:

Koda Anteckningar
ArrayList<Integer> list = new ArrayList<Integer>();

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

Slinga över alla index 1till 20
Om indexet är delbart med 2utan rest,
lägg till det i listan

Låt oss nu visa alla element i listan på skärmen:

Koda Anteckningar
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));
Skapa ett listobjekt
Slinga över alla index 1till 20

Om talet är delbart med 2utan rest,
lägg till det i listan

Slinga från noll till listans storlek
Visa varje element på skärmen

Ta bort element:

Låt oss nu ta bort alla element som är delbara med 4. Observera att efter att ha tagit bort ett element från listan ändras positionerna för de återstående elementen omedelbart.

Koda Anteckningar
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--;
   }
Skapa ett listobjekt

Slinga över alla index 1till 20
Om indexet är delbart med 2utan rest,
lägg till det i listan

Slinga från noll till listans storlek
Om ett element i listan är delbart med 4utan rest:

a) ta bort elementet
b) minska iräknaren så att vi får samma index vid nästa iteration av slingan

Låt oss säga att du måste ta bort de tre sista elementen från en lista.

Så här gör du det felaktigt:

Koda Anteckningar
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);
Skapa ett listobjekt

Listan har 10 element: 2, 4, 6, ... 20



n = 10
n - 3 = 7(det finns 9 element kvar i listan)
n - 2 = 8(det finns 8 element kvar i listan)
n - 1 = 9(det finns 7 element kvar i listan)

Efter att ha tagit bort det 7:e och 8:e elementet kommer endast 8 element att finnas kvar i listan. Det betyder att det inte kommer att vara möjligt att ta bort det 9:e elementet - ett fel kommer att uppstå i programmet.

Så här tar du bort elementen på rätt sätt:

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

Elementen måste tas bort antingen från slutet eller från en annan konsekvent plats, eftersom elementen förskjuts med ett efter varje borttagningsoperation.