De Tuple<L,R>
klasse is relatief simpel om te
ontwerpen en gebruiken.
Om je een grotere uitdaging te geven willen we nu
de ontworpen Tuple aanpassen door de Comparable
interface
te implementeren.
Dat betekent dat de ene ComparableTuple<L,R>
zichzelf kan ordenen ten opzichte van een andere van
het zelfde type:
compareTo(ComparableTuple<L,R> other)
.
Om te beginnen veranderen we de eerste regel als volgt: (Tip! Maak dit een nieuwe klasse!)
public ComparableTuple<L,R> implements Comparable<ComparableTuple<L,R>> {
// ...
}
Bestudeer de bovenstaande regel zorgvuling en zorg er voor dat je begrijpt waarom hij op deze manier is opgeschreven.
Nadat je dit hebt laten bezinken, wil je de volgende vraag beantwoorden:
HOE ga je nou bepalen welke tuple eerder komt dan een andere, als je niet
weet wat de L
en R
types gaan zijn?
Beide types moeten zelf ook minimaal Comparable zijn:
public ComparableTuple<L extends Comparable<L>, R extends Comparable<R>> implements Comparable<ComparableTuple<L,R>> {
// ...
}
Merk op dat het laatste deel onveranderd blijft. Maar L en R zijn nu gelimiteerd tot types die zelf ook Comparable implementeren.
Opdracht
ComparableTuple
klasse.Comparator<Tuple<L,R>>
opslaat (in de constructor) om sorteren af te handelen.