CodeGym /Java kurs /Modul 1 /Samlinger — en hjelperklasse

Samlinger — en hjelperklasse

Modul 1
Nivå , Lekse
Tilgjengelig

1. Liste over metoder

Husker du at Javas skapere skrev en hel hjelpeklasse som ble kalt Arraysfor å gjøre det enklere for oss når vi jobber med arrays?

De gjorde det samme for samlinger. Java har en java.util.Collectionsklasse som har mange metoder som er nyttige for å jobbe med samlinger. Her er bare de mest interessante:

Metoder Beskrivelse
addAll(colls, e1, e2, e3, ...)
Legger til elementene e1, e2, e3, ... til collssamlingen
fill(list, obj)
Erstatter alle elementene i den beståtte listen medobj
nCopies(n, obj)
Returnerer en liste over nkopier av objobjektet
replaceAll(list, oldVal, newVal)
Erstatter alle forekomster av oldValmed newVali listlisten
copy(dest, src)
Kopierer alle elementer fra srclisten til destlisten
reverse(list)
Reverserer listen.
sort(list)
Sorterer listen i stigende rekkefølge
rotate(list, n)
Skifter elementene i listlisten syklisk etter nelementer
shuffle(list)
Tilfeldig blander elementene i listen
min(colls)
Finner minimumselementet i collssamlingen
max(colls)
Finner det maksimale elementet i collssamlingen
frequency(colls, obj)
Bestemmer hvor mange ganger objelementet forekommer i collssamlingen
binarySearch(list, key)
Søker etter keyi en sortert liste og returnerer den tilsvarende indeksen.
disjoint(colls1, colls2)
Returnerer truehvis samlingene ikke har noen elementer til felles
Viktig:

Mange av disse metodene bruker ikke ArrayList, HashSetog- HashMapklassene i seg selv, men med de tilsvarende grensesnittene: Collection<T>, List<T>, Map<K, V>.

Dette er ikke et problem: Hvis en metode aksepterer en List<T>, kan du alltid gi den en ArrayList<Integer>, men oppgaveoperatøren fungerer ikke i motsatt retning.


2. Opprette og endre samlinger

Collections.addAll(Collection<T> colls, T e1, T e2, T e3, ...)metode

Metoden addAll()legger til elementene e1, e2, e3, ... til collssamlingen Et hvilket som helst antall elementer kan sendes.

Kode Konsollutgang
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

for (int i: list)
   System.out.println(i);
1
2
3
4
5

Collections.fill(List<T> list, T obj)metode

Metoden fill()erstatter alle elementene i samlingen listmed objelementet.

Kode Konsollutgang
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);

Collections.fill(list, 10);

for (int i: list)
   System.out.println(i);
10
10
10

Collections.nCopies(int n, T obj)metode

Metoden nCopies()returnerer en liste over nkopier av objelementet. Merk at den returnerte listen er uforanderlig, noe som betyr at du ikke kan endre den! Du kan bare bruke den til å lese verdier:

Kode Beskrivelse
List<String> immutableList = Collections.nCopies(5, "Hello");

ArrayList<String> list = new ArrayList<String>(immutableList);

for(String s: list)
   System.out.println(s);
Lag en uforanderlig liste med 5 Hellostrenger
Lag en mutabel listog fyll den med verdiene fra immutableListlisten.

Konsoll utgang:
Hello
Hello
Hello
Hello
Hello

Collections.replaceAll (List<T> list, T oldValue, T newValue)metode

Metoden replaceAll()erstatter alle elementene i listsamlingen lik oldValuemed newValue.

Kode Konsollutgang
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);

Collections.replaceAll(list, 2, 20);

for (int i: list)
   System.out.println(i);
1
20
3

Collections.copy (List<T> dest, List<T> src)metode

Metoden copy()kopierer alle elementene i srcsamlingen inn i destsamlingen.

Hvis destsamlingen starter lenger enn srcsamlingen, vil de gjenværende elementene i destsamlingen forbli intakte.

Viktig:
Samlingen destmå være minst like lang som srcsamlingen (ellers vil en IndexOutOfBoundsExceptionvil bli kastet).
Kode Konsollutgang
ArrayList<Integer> srcList = new ArrayList<Integer>();
Collections.addAll(srcList, 99, 98, 97);

ArrayList<Integer> destList = new ArrayList<Integer>();
Collections.addAll(destList, 1, 2, 3, 4, 5, 6, 7);

Collections.copy(destList, srcList);

for (int i: destList)
   System.out.println(i);
99
98
97
4
5
6
7


3. Rekkefølge av elementene

Collections.reverse(List<T> list)metode

Metoden reverse()reverserer rekkefølgen på elementene i den beståtte listen.

Kode Konsollutgang
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

Collections.reverse(list);

for (int i: list)
   System.out.println(i);
5
4
3
2
1

Collections.sort(List<T> list)metode

Metoden sort()sorterer den beståtte listen i stigende rekkefølge.

Kode Konsollutgang
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

Collections.sort(list);

for (int i: list)
   System.out.println(i);
2
4
11
15
23

Collections.rotate(List<T> list, int distance)metode

Metoden rotate()skifter syklisk elementene i den beståtte listen etter distanceposisjoner fremover.

Kode Konsollutgang
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6, 7, 8, 9);

Collections.rotate(list, 3); // Shift by 3 positions

for (int i: list)
   System.out.println(i);
7
8
9
1
2
3
4
5
6

Collections.shuffle(List<T> list)metode

Metoden shuffle()blander tilfeldig alle elementene i den beståtte listen. Resultatet er forskjellig hver gang.

Kode Konsollutgang
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

Collections.shuffle(list); // Shuffle the elements

for (int i: list)
   System.out.println(i);
5
2
4
3
1


4. Finne elementer i samlinger

Collections.min(Collection<T> colls)metode

Metoden min()returnerer minimumselementet i samlingen.

Kode Konsollutgang
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

int min = Collections.min(list);

System.out.println(min);
2

Collections.max(Collection<T> colls)metode

Metoden max()returnerer det maksimale elementet i samlingen.

Kode Konsollutgang
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

int max = Collections.max(list);

System.out.println(max);
23

Collections.frequency(Collection<T> colls, T obj)metode

Metoden frequency()teller antall ganger elementet objforekommer i collssamlingen

Kode Konsollutgang
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15, 4, 2, 4);

int count = Collections.frequency(list, 4);

System.out.println(count);
3

Collections.binarySearch(Collection<T> colls, T obj)metode

Metoden binarySearch()søker etter objelementet i collssamlingen. Returnerer indeksen til det funnet elementet. Returnerer et negativt tall hvis elementet ikke blir funnet.

Viktig:
Før binarySearch()metoden kalles må samlingen sorteres (bruk Collections.sort()).
Kode Konsollutgang
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 5, 15, 4, 2, 4);

Collections.sort(list);  // 2, 2, 4, 4, 5, 11, 15, 23

int index = Collections.binarySearch(list, 5);    // 4
System.out.println(index);

int index2 = Collections.binarySearch(list, 15);  // 6
System.out.println(index2);

int index3 = Collections.binarySearch(list, 16); // The element doesn't exist
System.out.println(index3);
4
6
-8

Collections.disjoint(Collection<T> coll1, Collection<T> coll2)metode

Metoden disjoint()returnerer truehvis de beståtte samlingene ikke har noen elementer til felles.

Kode Konsollutgang
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6, 7);

ArrayList<Integer> list2 = new ArrayList<Integer>();
Collections.addAll(list2, 99, 98, 97);

boolean isDifferent = Collections.disjoint(list, list2);
System.out.println(isDifferent);
true

Kommentarer
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION