CodeGym /Java Course /Module 1 /Collecties - een helperklasse

Collecties - een helperklasse

Module 1
Niveau 18 , Les 3
Beschikbaar

1. Lijst met methoden

Weet je nog dat de makers van Java een hele helperklasse hebben geschreven Arraysvoor ons gemak bij het werken met arrays?

Hetzelfde deden ze voor collecties. Java heeft een java.util.Collectionsklasse die veel methoden heeft die handig zijn voor het werken met verzamelingen. Hier zijn slechts de meest interessante:

methoden Beschrijving
addAll(colls, e1, e2, e3, ...)
Voegt de elementen e1, e2, e3, ... toe aan de collscollectie
fill(list, obj)
Vervangt alle elementen in de doorgegeven lijst doorobj
nCopies(n, obj)
Retourneert een lijst met nkopieën van het objobject
replaceAll(list, oldVal, newVal)
Vervangt alle instanties van oldValmet newValin de listlijst
copy(dest, src)
Kopieert alle elementen van de srclijst naar de destlijst
reverse(list)
Keert de lijst om.
sort(list)
Sorteert de lijst in oplopende volgorde
rotate(list, n)
Verschuift de elementen van de listlijst cyclisch met nelementen
shuffle(list)
Schudt willekeurig de elementen in de lijst
min(colls)
Vindt het minimale element in de collsverzameling
max(colls)
Vindt het maximale element in de collsverzameling
frequency(colls, obj)
Bepaalt hoe vaak het objelement in de collsverzameling voorkomt
binarySearch(list, key)
Zoekt naar keyin een gesorteerde lijst en retourneert de overeenkomstige index.
disjoint(colls1, colls2)
Retourneert trueals de collecties geen elementen gemeen hebben
Belangrijk:

Veel van deze methoden gebruiken niet per se de klassen ArrayList, HashSeten , maar met de bijbehorende interfaces: , , .HashMapCollection<T>List<T>Map<K, V>

Dit is geen probleem: als een methode een accepteert List<T>, kun je er altijd een doorgeven ArrayList<Integer>, maar de toewijzingsoperator werkt niet in de tegenovergestelde richting.


2. Collecties maken en wijzigen

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

De addAll()methode voegt de elementen e1, e2, e3, ... toe aan de collsverzameling Elk aantal elementen kan worden doorgegeven.

Code Console-uitvoer
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)methode

De fill()methode vervangt alle elementen van de listverzameling door het objelement.

Code Console-uitvoer
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)methode

De nCopies()methode retourneert een lijst met nkopieën van het objelement. Merk op dat de geretourneerde lijst onveranderlijk is, wat betekent dat u deze niet kunt wijzigen! U kunt het alleen gebruiken om waarden te lezen:

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

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

for(String s: list)
   System.out.println(s);
Maak een onveranderlijke lijst van 5 Hellostrings
Maak een veranderlijke lijst listen vul deze met de waarden uit de immutableListlijst.

Console-uitvoer:
Hello
Hello
Hello
Hello
Hello

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

De replaceAll()methode vervangt alle elementen in de listverzameling gelijk aan oldValuedoor newValue.

Code Console-uitvoer
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)methode

De copy()methode kopieert alle elementen van de srccollectie naar de destcollectie.

Als de destcollectie langer begint dan de collectie, dan blijven srcde overige elementen van de collectie intact.dest

Belangrijk:
De destverzameling moet minstens even lang zijn als de srcverzameling (anders IndexOutOfBoundsExceptionwordt er een gegooid).
Code Console-uitvoer
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. Volgorde van de elementen

Collections.reverse(List<T> list)methode

De reverse()methode keert de volgorde van de elementen van de doorgegeven lijst om.

Code Console-uitvoer
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)methode

De sort()methode sorteert de doorgegeven lijst in oplopende volgorde.

Code Console-uitvoer
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)methode

De rotate()methode verschuift cyclisch de elementen van de doorgegeven lijst met distanceposities naar voren.

Code Console-uitvoer
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)methode

De shuffle()methode schudt willekeurig alle elementen van de doorgegeven lijst. Het resultaat is elke keer weer anders.

Code Console-uitvoer
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. Elementen zoeken in collecties

Collections.min(Collection<T> colls)methode

De min()methode retourneert het minimale element in de verzameling.

Code Console-uitvoer
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)methode

De max()methode retourneert het maximale element in de verzameling.

Code Console-uitvoer
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)methode

De frequency()methode telt het aantal keren dat het objelement voorkomt in de collsverzameling

Code Console-uitvoer
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)methode

De binarySearch()methode zoekt naar het objelement in de collsverzameling. Retourneert de index van het gevonden element. Retourneert een negatief getal als het element niet wordt gevonden.

Belangrijk:
Voordat de binarySearch()methode wordt aangeroepen, moet de verzameling worden gesorteerd (gebruik Collections.sort()).
Code Console-uitvoer
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)methode

De disjoint()methode keert terug trueals de doorgegeven collecties geen elementen gemeen hebben.

Code Console-uitvoer
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

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