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 | ||
---|---|---|
| ||
// 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 | ||
---|---|---|
| ||
// 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 | ||
| ||
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 | ||
---|---|---|
| ||
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.