Collections Flashcards

1
Q

Beschrijf wat een ArrayList doet
- welke interface(es) implementeert het?
- Staat het null toe?
- Sorteert het de elementen?
- Gebruikt het hashcode?
- Gebruikt het compareTo?

A
  • Implementeert de List interface
  • Staat null toe (1 element mag de waarde null bevatten)
  • Geen gesorteerde elementen
  • Gebruikt geen hashcode
  • Gebruikt geen compareTo
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Beschrijf wat een HashSet doet
- welke interface(es) implementeert het?
- Staat het null toe?
- Sorteert het de elementen?
- Gebruikt het hashcode?
- Gebruikt het compareTo?

A
  • Implementeert de Set interface
  • Staat null toe
  • Geen gesorteerde elementen
  • Gebruikt hashcode
  • Gebruikt geen compareTo
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Beschrijf wat een Queue doet
- Hoe wordt het geordend?
- Mag het duplicates bevatten?
- Worden elementen gestructureerd toegevoegd?

A
  • Geordende elementen (in de orde waarin ze toegevoegd zijn)
  • First in, First out
  • Beeld je een rij in. Items worden rechts van de rij toegevoegd en links ervan weer verwijderd.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Beschrijf wat een LinkedList doet
- welke interface(es) implementeert het?
- Staat het null toe?
- Sorteert het de elementen?
- Gebruikt het hashcode?
- Gebruikt het compareTo?

A
  • Implementeert de List en Deque (onderdeel van Queue) interface
  • Staat null toe
  • Geen gesorteerde elementen
  • Gebruikt geen hashcode
  • Gebruikt geen compareTo
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wat voor Sets kun je maken

A

HashSet en TreeSet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wat voor Maps kun je maken?

A

HashMap en TreeMap

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Beschrijf wat een Map doet
- Hoe wordt het geordend?
- Mag het duplicates bevatten?

A
  • Ongeorderde elementen
  • Werkt met key - values
  • Staat duplicate waarden toe
  • Staat geen duplicate key toe; keys worden gewoon overschreven
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Wat voor Lists kun je maken?

A

ArrayList en LinkedList

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wat valt onder de collections API?

A

List, Queue en Set

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wat voor Queue’s kun je maken?

A

Alleen een PriorityQueue

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Beschrijf wat een Set doet
- Hoe wordt het geordend?
- Mag het duplicates bevatten?
- Worden elementen gestructureerd toegevoegd?

A
  • Ongeordende elementen
  • Staat geen duplicaten toe
  • Elementen worden niet in een bepaalde volgorde toegevoegd / verwijderd en zijn daarom niet direct op te vragen.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Beschrijf wat een List doet
- Hoe wordt het geordend?
- Mag het duplicates bevatten?
- Worden elementen gestructureerd toegevoegd?

A
  • Geordend door de index (dus bijv. op te halen met .get(index)
  • Mag duplicates bevatten
  • Elementen worden niet in een bepaalde volgorde toegevoegd / verwijderd
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Hoe maken we een nieuw object met alle values uit een hashmap?

A

met mijnHashMap.values();
Wijs dit aan een Collection type toe. ArrayList of een ander dergelijk type levert errors op.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Wat doet de .keySet method?

A

.keySet zorgt ervoor dat alle keys van een HashMap in een nieuw Set object worden opgeslagen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Hoe halen we een item uit een hashmap op? Wat gebeurt er wanneer de waarde niet kan worden gevonden?

A

mijnHashmap.get(key);
Wanneer de key niet wordt gevonden krijgen we runtime een NullpointerException

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Wat zijn de twee voornaamste verschillen tussen een Set en een List? Wanneer is wat handig?

A

1) List is indexed. Set heeft geen index.
2) List kan duplicates hebben. Een Set niet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Wanneer gebruiken we .size en wanneer .length?

A

.size(): bij objecten uit de collections interface (ArrayLists bijvoorbeeld)
.length(): bij String, Stringbuilder, en primitive arrays.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Wat is het verschil tussen Comparator en Comparable?

A

Beide zijn functional interfaces.

Comparable is bedoeld om een class te extenden, en vervolgens de compareTo method te implementeren. compareTo verwacht 1 parameter.

Comparator is bedoeld om in de implementatie (dus niet in de class) een vergelijking te schrijven dmv een lambda. Voor een Comparator dient de compare method overschreven te worden. Deze verwacht 2 parameters (voor de 2 objecten die met elkaar worden vergeleken).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q
A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Wat zijn manieren om een item aan het begin of eind van een LinkedList toe te voegen?

A

myLinkedList.addFirst(“item”) en myLinkedList.addLast(“item”)
addLast doet hetzelfde als add

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Hoe maak ik van een primitive array een ArrayList?

A

Met Arrays.asList(myPrimitiveArray).
AsList is een static method uit de Arrays class.
Let er wel op dat de size vaststaat! We kunnen nu geen elementen toevoegen of verwijderen uit de array.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Kunnen we in een for loop items uit de desbetreffende ArrayList verwijderen?

A

Nee, dit geeft een ConcurrentModificationException

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Hoe maak ik van een ArrayList een primitive array?

A

met toArray();
Let er wel op dat deze method altijd Object[] returnt. Je dient dus te casten voor het juiste resultaat. Bijvoorbeeld:
String[] convertedList = (String[]) myList.toArray();

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Hoe halen we een item weg uit een ArrayList?

A

Met .remove(index) of .remove(“waarde”);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Hoe kunnen we items toevoegen aan een ArrayList (3 manieren)?

A

1) Bij initiatie: String[] instruments = {“guitar”, “drums”, “bass”};
2) met .add(“piano”);
3) met .add(“saxophone”, 3)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Hoe geven we de grootte van een ArrayList aan?

A

met bijvoorbeeld new ArrayList(100);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Wat is het verschil tussen een Hash en een Tree?

A
  • Een Hash itereert willekeurig over de elementen array.
  • Een Tree geeft de waarden gesorteerd terug
  • Een hash kan null waardes bevatten, een tree niet
28
Q

Beschrijf wat een TreeMap doet
- welke interface(es) implementeert het?
- Staat het null toe?
- Sorteert het de elementen?
- Gebruikt het hashcode?
- Gebruikt het compareTo?

A
  • Implementeert de Map interface
  • Implementeert ook de NavigableMap interface
  • Staat geen null toe
  • Gesorteerde elementen
  • Gebruikt geen hashcode
  • Gebruikt compareTo
29
Q

Beschrijf wat een HashMap doet
- welke interface(es) implementeert het?
- Staat het null toe?
- Sorteert het de elementen?
- Gebruikt het hashcode?
- Gebruikt het compareTo?

A
  • Implementeert de Map interface
  • Staat null toe (1 null voor de key, en de value kan altijd null zijn (mits het opgegeven type dat ondersteunt))
  • Geen gesorteerde elementen
  • Gebruikt hashcode
  • Gebruikt geen compareTo
30
Q

Beschrijf wat een TreeSet doet
- welke interface(es) implementeert het?
- Staat het null toe?
- Sorteert het de elementen?
- Gebruikt het hashcode?
- Gebruikt het compareTo?

A
  • Implementeert de Set interface
  • Staat geen null toe
  • Gesorteerde elementen
  • Gebruikt geen hashcode
  • Gebruikt compareTo
31
Q

Wat voor letter moet voor een generic aangegeven zijn?

A

Een generic moet als ‘diamond’ worden weergegeven: <T>. In plaats van de T mag alles staan. Dit kunnen ook meerdere letters zijn. De beperkingen zijn hetzelfde als die bij het aanmaken van een variabele. Maar in plaats van <T> mogen we ook <GenericType> of <Foo1> zeggen.</Foo1></GenericType></T></T>

32
Q

Waar definieer ik een generic voor mijn class?

A

doorgaans in je class definitie:

public class Widget<T> {
...
}</T>

33
Q

Waar kunnen Generics voor worden gebruikt?

A

Classes en methods

34
Q

Wat is een Generic Wildcard en hoe ziet deze eruit?

A

Een wildcard zegt eigenlijk: ‘het maakt niet uit wat je hier in zet’. In een method ziet dit er dan zo uit:

public void PrintList(List<?> list) { … }

list kan dus elk type element bevatten. We kunnen dit ook specificeren:

public void PrintList(List<? extends String> list) { … }

Dit betekent dat list elk type element kan bevatten zo lang het een String, of een extension van string is.

public void PrintList(List<? super String> list) { … }

Dit betekent dat list elk type element kan bevatten zo lang het een String, of parent extension van string is.

35
Q

Is een diamond Operator altijd verplicht om een type mee te geven?

A

Aan de linker kant van de komma moet een diamond operator een type meegeven. Deze code mag bijvoorbeeld niet:
List<> myList = new ArrayList<>();

Aan de rechter kant van de = zijn we wat vrijer. Het volgende is valide code:
List<String> myList = new ArrayList<>();
List<String> myList = new ArrayList();
List<String> myList = new ArrayList<String>();</String></String></String></String>

Let er wel op dat het type in de diamond operator overeenkomt met die aan de linker kant.

36
Q

Mag ik een diamond operator in een method meegeven?

A

Nee. Dit is bijv. geen valide code:
void use(List<> data) {}

37
Q

Wat returnt de .add functie in collection objecten?

A

True. Tenzij het element al bestaat, dan returnt het false bij een List, en een Error bij een Set.

38
Q

Collection<String> birds = new ArrayList<>();
birds.add("hawk");
birds.add("hawk");
System.out.println(birds.remove("cardinal"));
System.out.println(birds.remove("hawk"));
System.out.println(birds);</String>

Wat wordt er op de laatste regel geprint?

A

[hawk]

de .remove functie kan hier slechts 1 element verwijderen.

39
Q

Hoe controleren we of een ArrayList leeg is?

A

met mijnList.isEmpty();

40
Q

Hoe legen we een ArrayList?

A

met mijnList.clear();

41
Q

Hoe checken we of een ArrayList een bepaald item bevat?

A

met mijnList.contains(“element”);

42
Q

Hoe halen we elementen in een ArrayList weg wanneer ze aan een bepaalde voorwaarde voldoen.

A

met removeIf(item -> check(item))

removeIf geven we dus een Predicate mee die bepaalt of we het element uit de ArrayList moeten halen.

43
Q

Hoe itereer je over een ArrayList?

A

met .forEach(item -> doStuff(item))

forEach krijgt dus een Consumer mee.

Je kan op het examen ook een ouderwetse oplossing tegenkomen:

Iterator<String> iter = coll.iterator();
while(iter.hasNext()) {
String string = iter.next();
System.out.println(string);
}</String>

44
Q

Maakt de volgorde bij .equals uit bij een List? En hoe is dit bij een Set?

A

Bij een List maakt de volgorde in .equals uit. Als de volgorde niet overeenkomt returnt java false.

Bij een Set maakt de volgorde in .equals niet uit. Ook als de volgorde niet overeenkomt, maar alle elementen van Set A en Set B komen verder wel overeen, returnt .equals true.

45
Q
A
46
Q

Wat is het verschil tussen Arrays.asList(“item”) en List.of(“item”)

A

Arrays.asList(“item”) maken de array mutable. We kunnen van item wat anders maken. List.of(“item”) maakt de list immutable

46
Q

Wat gebeurt er als we een ArrayList met Integer objecten hebben en we willen een waarde verwijderen met mijnList.remove(100)?

A

Het element met de index 100 wordt gepakt. Ook als een element met de value 100 in de ArrayList staat wordt deze niet verwijderd. Bestaat index 100 niet, dan krijgen we een IndexOutOfBoundsException.

Als we een item met de waarde 100 willen verwijderen moeten we mijnList.remove(Integer.valueOf(100)) zeggen.

46
Q

Wat kunnen we hier tussen de haakjes zetten?:
List myList = new ArrayList();

A
  • een int (staat voor de grootte van de arrayList)
  • niets
  • een object uit de collections API

let op: Hier kunnen we geen directe waardes in zetten! Dan moeten we Arrays.asList(“item a”, “item b”) gebruiken.

46
Q

var list = new ArrayList<>();

Wat is bij de bovenstaande code het type van list?

A

Arraylist<object>;</object>

We kunnen vanaf hier dus een String aan de list toevoegen. Echter we kunnen nooit de String methods van het object aanroepen.

46
Q

wat doen de add, get en set methods in een ArrayList?

A
  • .add voegt een element toe. Toegestaan met of zonder index.
  • .get geeft de waarde van een index terug (of een IndexOutOfBoundsException wanneer de index niet bestaat).
  • .set geeft een bestaande index een nieuwe waarde. (ook hier een IndexOutOfBoundsException wanneer de index niet bestaat).
47
Q

hoe vervang ik elk item in een Arraylist?

A

met .replaceAll(UnaryOperator).

List<Integer> listInput = Arrays.asList(1, 3, 5, 7);
listInput.replaceAll(item -> item + 4 );

Bovenstaande code telt 4 bij elk item op.

47
Q

Wat is het verschil tussen een Queue en een Deque

A

Een Queue geeft je de kans om FIFO elementen in te zien. Je kan dus alleen het eerste element zien of verwijderen. Toevoegen kan alleen aan het eind.

Een Deque geeft je de kans om FIFO of LIFO elementen in te zien. Je kan dus alleen het eerste element of laatste element zien of verwijderen. Toevoegen kan aan het begin of eind.

47
Q

Welke twee static methods zijn specifiek voor de Set interface?

A

Set.of en Set.copyOf.

copyOf neemt een Collection object als input

47
Q

Hoe kunnen we met een factory method een Map object maken?

A

Map.of(“key1”, “value1”, “key2”, “value2”);

Let er hier wel op dat het altijd een veelvoud van 2 moet zijn.
Een alternatieve manier is:

Map.ofEntries(
Map.entry(“key1”, “value1”),
Map.entry(“key2”, “value2”));

48
Q

Hoe checken we of een HashMap of TreeMap een bepaald item bevat?

A

met containsKey(“mijnkey”) checken we de key.
met containsValue(“mijnWaarde”) de value

.contains bestaat niet in de Map interface

49
Q

Wat geeft .get terug bij een HashMap of Treemap als er geen waarde op te halen is

A

null

50
Q

Hoe voeg ik een item toe aan een HashMap of TreeMap

A

.put(key, value).

niet te verwarren met .add!

51
Q

Hoe zet ik een HashMap of TreeMap om naar een Set?

A

mijnMap.keySet()

52
Q

Hoe halen we een waarde op voor een Map Object, en definiëren we een fallback wanneer deze key niet bestaat.

A

met getOrDefault(key, fallbackWaarde)

53
Q

Hoe voegen we in een Map Object een item alleen toe wanneer de key nog niet bestaat?

A

met putIfAbsent(key, value)

54
Q

Wat is er nodig voor een goede implementatie van Comparable?

A

1) de class dient Comparable te implementeren.
2) compareTo dient geïmplementeerd te worden.
3) compareTo dient een int te returnen. Deze wordt -1 als de objecten niet overeen komen en een hoger getal als dit wel het geval is.

55
Q

wanneer we bijvoorbeeld deze code hebben:

public class Person implements Comparable { … }

Is het verplicht om Comparable een diamond operator met een type mee te geven?

A

Wanneer de compareTo method (die met Comparable geïmplementeerd dient te worden) een Object als parameter meegeeft:

public int compareTo(Object o) {
return 0;
}

dan is de diamond niet nodig. In elk ander geval wel. Voorbeeld:

class Person implements Comparable<Person> {</Person>

@Override
public int compareTo(Person o) {
    return 0;
} }
56
Q

Wanneer gebruiken we Comparator in plaats van Comparable?

A

De comparable class gebruiken we wanneer we willen dat elk object van die class een vergelijking uit kan voeren.

Comparator gebruiken we wanneer we deze implementatie alleen in specifieke gevallen willen, en dit niet in de class zelf willen meenemen. (Functional programming)

57
Q

Hoe schrijf ik een Comparator?

A

Een Comparator is een Class met een compare method die overschreven moet worden.

Comparator<Duck> byWeight = 
    new Comparator<Duck>() {
        public int compare(
            Duck d1, Duck d2) {
                return d1.getWeight() - 
                d2.getWeight();
            }
    };
57
Q

Hoe roep ik een Comparator aan?

A

met Collections.compare(myArray, comparator);

58
Q

Hoe vervang ik een specifieke index van een ArrayList.

A

met mijnArray.set(index, value);

Pas op: Als de index niet bestaat geeft java een compilation error!

59
Q

Stel, dit is mijn code:

Deque<String> deque = new ArrayDeque<>();
deque.add("Harry");
deque.add("Paul");
deque.add("Brian");
deque.add("Vincent");
deque.poll();
System.out.println(deque);</String>

Wat print ik?

A

[Paul, Brian, Vincent].
Deque werkt net als Queue met FIFO. Harry is als eerste toegevoegd dus gaat er met poll ook als eerste uit. .pop zou hetzelfde doen.

pollLast zou het laatst toegevoegde item (Vincent) verwijderen.