1. Legge til et element i midten (eller i begynnelsen) av en liste

Hvis vi ønsker å sette inn et element i midten av listen, er dette hva som skjer inne i listen.

Anta at vi har en liste med 11 elementer:

Legge til et element i midten (eller i begynnelsen) av en liste

Vi ønsker å sette inn tallet 10 000 i listen ved indeks 5. For å gjøre dette trenger vi bare å utføre:

list.add(5, 10000);

Hvor lister en ArrayListvariabel. Metoden add(int index, type value)legger til verdien 10000 på posisjon 5 i listen. Her er hva som skjer i add()metoden:

Trinn 1: Alle elementene i matrisen, fra den 5. posisjonen, vil bli forskjøvet (kopiert) med 1 element mot slutten av matrisen:

Legge til et element i midten (eller i begynnelsen) av en liste 1

Merk at elementene i den 5. og 6. cellen i matrisen nå er de samme.

Trinn 2: Skriv verdien 10 000 inn i den femte cellen:

Legge til et element i midten (eller i begynnelsen) av en liste 2

Nå inneholder listen alle elementene i matrisen, og den femte cellen inneholder tallet 10 000. Akkurat det vi ønsket.



2. Fjerne et element fra en liste

Å fjerne et element fra en liste ligner på å sette det inn, men prosessen er omvendt.

La oss fjerne det tredje elementet fra en liste. For å gjøre dette, må vi utføre:

list.remove(3);

Her er hva som skjer i remove()-metoden:

Trinn 1: Elementene i matrisen, fra den fjerde posisjonen, vil bli forskjøvet (kopiert) med 1 element mot starten av matrisen:

Fjerne et element fra en liste

Trinn 2: Verdien av variabelen sizereduseres med 1.

Fjerne et element fra en liste 2

Vær oppmerksom på at det er noen verdier farget grå på slutten av matrisen. Teknisk sett er dette søppel. De må fjernes for ikke å forstyrre søppelinnsamlingen .

Trinn 3: Rydding av søppel

Fjerne et element fra en liste 3



3. Praktiske eksempler på arbeid med liste i Java

La oss skrive noen eksempler på arbeid med lister:

Vi viser alle partallene i området fra 1 til 20:

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

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

Loop over alle indeksene 1til 20
Hvis indeksen er delelig med 2uten en rest,
legg den til i listen

La oss nå vise alle elementene i listen på skjermen:

Kode Notater
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));
Lag et listeobjekt
Loop over alle indeksene 1til 20

Hvis tallet er delelig med 2uten en rest,
legg det til listen

Loop fra null til størrelsen på listen
Vis hvert element på skjermen

Fjerning av elementer:

La oss nå fjerne alle elementene som er delbare med 4. Merk at etter at du har fjernet et element fra listen, endres posisjonene til de gjenværende elementene umiddelbart.

Kode Notater
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--;
   }
Lag et listeobjekt

Loop over alle indeksene 1til 20
Hvis indeksen er delelig med 2uten en rest,
legg den til i listen

Loop fra null til størrelsen på listen
Hvis et element i listen er delelig med 4uten en rest:

a) fjern elementet
b) reduser itelleren slik at vi får samme indeks ved neste iterasjon av løkken

La oss si at du må fjerne de siste 3 elementene fra en liste.

Slik gjør du det feil:

Kode Notater
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);
Lag et listeobjekt

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



n = 10
n - 3 = 7(det er 9 elementer igjen i listen)
n - 2 = 8(det er 8 elementer igjen i listen)
n - 1 = 9(det er 7 elementer igjen i listen)

Etter å ha fjernet det 7. og 8. elementet, vil bare 8 elementer være igjen i listen. Det betyr at det ikke vil være mulig å slette det 9. elementet - det vil oppstå en feil i programmet.

Her er den riktige måten å fjerne elementene på:

valg 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);

Elementene må fjernes enten fra enden eller fra et annet konsekvent sted, siden elementene blir forskjøvet med én etter hver fjerningsoperasjon.