Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Excerpt

java.util.ArrayList er en standard Java-klasse som implementerer en dynamisk liste som lar deg legge til, fjerne og finne elementer.

I Java kan man lage arrays av enkle datatyper (slik som int[]Java har innebygget støtte for enkle tabeller, både for objekter (f.eks. String) og enkle datatyper (f.eks. int), men disse har svært begrenset med funksjonalitet og har en forhåndsdefinert lengde. Ved å bruke en ArrayList kan man lage dynamiske lister og manipulere innholdet med et enkelt brukergrensesnitt for å endre på listenvell av hendige metoder.

Opprette en ArrayList

En ArrayList kan instansieres som en tom liste eller ved et Collection-object som inputå gi inn en annen ArrayList (egentlig et hvilken som helst Collection-objekt).

Code Block
languagejava
// husk import java.util.ArrayList;
 
ArrayListArrayList<String> listlist1 = new ArrayListArrayList<String>(); // lager en ny tom liste
ArrayList list spesialisert til å inneholde String-objekter
... fyll list1 med innhold her
ArrayList<String> list2 = new ArrayListArrayList<String>(Collection clist1); // lager en liste fra Collection-objektet med samme innhold som list1

Som vi ser over, så angir man ved deklarasjon av ArrayList-variabler og ved Ved opprettelsen av en ny ArrayList kan man spesifisere hva slags objekttype type objekter man ønsker å ha i listen. Ved å bruke Generics spesifiserer man type-paramteret på forhånd, slik at man ikke kan legge til andre objekt-typer i listen. Eksempelvis vil en ArrayList<String> ikke kunne legge til et Integer-objekt. Fordelen med dette er å unngå bugs i koden, samt at man slipper å caste objekt-type når man henter ut elementer fra listen.Dette er strengt tatt ikke nødvendig, men det hjelper Java med å sjekke at vi bruker den riktig, f.eks. at vi putter rett type data inn i dem og at vi er forberedt på typen data som hentes ut. Eksempelvis vil en ikke kunne legg tall inn i en ArrayList<String>, kun String-objekter. Og når en tar objekter ut av lista, så vet Java at de er av typen String og vil ikke la oss tilordne dem til tall-variabler. Hvis en vil lage lister med bestemte elementer fra starten, så kan man bruke hjelpemetoden Arrays.asList:

Code Block
languagejava
// husk import både java.util.ArrayList og java.util.Arrays; 
ArrayList<String> list1 = Arrays.asList("en", "to", "tre"); // lager en ny ikke-modifisertbar liste som inneholder elementene "en", "to" og "tre"
ArrayList<String> list2
Code Block
languagejava
ArrayList<String> list = new ArrayList<String>(Arrays.asList("en", "to", "tre")); // lager en ny liste tommed liste som kun kan inneholde String-objekter. Type-parameteret settes i <>elementene "en", "to" og "tre" (kopiert fra en ikke-modifisertbar liste)

Egenskaper ved ArrayList

ArrayList er en dynamisk liste . Elementer kan legges til på en angitt posisjon i listen, men legges til i enden av listen hvis ikke posisjon er angitt. og har metoder for å legge til på slutten av lista, legg til hvor som helst inni lista, endre enkelt-elementer og fjerne dem. Dersom man fjerner et element i midten av listen, vil de påfølgende elementene forflyttes én plass forover i listen, slik at det til enhver tid ikke er huller i listen.

...

Code Block
languagejava
ArrayList<String> list = new ArrayList<String>();
list.addArrays.asList("A", "B", "C", "D");
list.add("B");
list.add("C");
list.add("D");)); // ny liste med elementene "A", "B", "C" og "D"
list.add("E");									// legg til "E" på slutten
System.out.println(list +  "\n" + list.get(2));
list.remove("C"); 								// fjerne første forekomst av "C"
System.out.println(list +  "\n" + list.get(2));
list.add(1, "F");								// legg til "F" på index 1 (0 er første element, 1 andre osv.)
System.out.println(list +  "\n" + list.get(2));
list.add("A");									// legg til "A" på slutten
System.out.println(list +  "\n" + list.get(2));
list.remove.add("A");								// fjern første forekomst av "A" (den som ble lagt til på slutten blir igjen)
System.out.println(list +  "\n" + list.get(2));

vil skrive ut:

...

ArrayList-objektet har mange metoder, hvor vi her gir en kort beskrivelse av de mest brukte. Her brukes <type> for å angi typen som ArrayList-objektet er spesialisert til å håndtere.

  • void add(Object<type>- legger til et element i enden av listen.
  • void add(int, Object <type>) - legger til et element på posisjonen angitt av argumentet.
  • void remove(Object) - fjerner den første forekomsten av argumentet hvis det finnes i listen. Elementer sammenlignes med equals-metoden.
  • int size() - returnerer størrelsen på listen, dvs. antall objekter elementer i listen.
  • boolean contains(Object) - returnerer true hvis elementet finnes i listen, ellers false. Elementer sammenlignes med equals-metoden.
  • <type> getObject get(int) - returnerer elementet på posisjonen angitt av argumentet.
  • void set(int,<type>) - bytter ut elementet på posisjonen  angitt av angitt av det første argumentet, med det andre argumentet.
  • int indexOf(Object) - returnerer indexen indeksen til den første forekomsten av argumentet eller -1 hvis listen ikke inneholder argumentet. Elementer sammenlignes med equals-metoden.
  • int lastIndexOf(Object) - returnerer indexen indeksen til den første forekomsten siste forekomsten (eller første fra enden) av argumentet eller -1 hvis listen ikke inneholder argumentet. Elementer sammenlignes med equals-metoden.
  • boolean isEmpty() - returnerer true hvis listen ikke inneholder noen elementer, ellers false. Dette tilsvarer å sjekke om size() returnerer 0, men er mer forståelig for leseren av koden.