Het uiteindelijke probleem ziet er wat ingewikkelder uit maar hier komt het eigenlijk op neer 
Ik heb een klasse (Test) dat 2 string bevat en ik wil die soteren met een treeset. Nu wil ik deze sorteren zowel op basis van de eerste string als op de tweede. De eerste is tamelijk simpel maar hoe forceer je de treeset om een andere compareTo te gaan gebruiken om zo te kunnen ordenen op de tweede string?
Het eerste zal dus logischerwijze als output dit geven:
bbb xxx
zzz aaa
Maar hoe kan ik er nu voor zorgen dat hij de compareToSecondString gaat gebruiken?
NB: het is mij opgevallen dat er een klein foutje in de tweede compareTo (als je er goed naar kijkt), maar dat doet er niet toe.
Alvast bedankt!
Ik heb een klasse (Test) dat 2 string bevat en ik wil die soteren met een treeset. Nu wil ik deze sorteren zowel op basis van de eerste string als op de tweede. De eerste is tamelijk simpel maar hoe forceer je de treeset om een andere compareTo te gaan gebruiken om zo te kunnen ordenen op de tweede string?
Java:
1
2
3
4
5
6
7
8
| SortedSet<Test> testjes = Collections.synchronizedSortedSet(new TreeSet<Test>()); testjes.add(new Test("zzz", "aaa")); testjes.add(new Test("bbb", "xxx")); for(Test t : testjes){ System.out.println(t.toString()); } |
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| public class Test implements Comparable { String one, two; public Test(String one, String two){ this.one = one; this.two = two; } @Override public String toString(){ return this.one + " " + this.two; } public int compareTo(Object o) { return this.toString().compareTo(o.toString()); } public int compareToSecondString(Object o){ return this.two.compareTo(o.toString()); } } |
Het eerste zal dus logischerwijze als output dit geven:
bbb xxx
zzz aaa
Maar hoe kan ik er nu voor zorgen dat hij de compareToSecondString gaat gebruiken?
NB: het is mij opgevallen dat er een klein foutje in de tweede compareTo (als je er goed naar kijkt), maar dat doet er niet toe.
Alvast bedankt!