Ich fragte mich, wie ich die Sortierrichtung nur unter bestimmten Bedingungen ändern könnte. In meinem Fall sollten Strings, die mit 'BB' beginnen, in die andere Richtung sortiert werden, alles andere sollte wie gewohnt sortiert werden.
Meine Testklasse:
public class StringTest {
public static void main(String[] args) {
SomeClass someClass1= new SomeClass("AA");
SomeClass someClass2= new SomeClass("AB");
SomeClass someClass3= new SomeClass("CB4");
SomeClass someClass4= new SomeClass("BB7");
SomeClass someClass5= new SomeClass("BB9");
SomeClass someClass6= new SomeClass("BB3");
SomeClass someClass7= new SomeClass("CB3");
List list = new ArrayList();
list.add(someClass1);
list.add(someClass2);
list.add(someClass3);
list.add(someClass4);
list.add(someClass5);
list.add(someClass6);
list.add(someClass7);
Collections.sort(list);
for (SomeClass someClass : list) {
System.out.println(someClass.getSomeField());
}
}
}
Mein Vergleichsklasse:
public class SomeClass implements Comparable
{
private String someField;
public int compareTo(final SomeClass o)
{
int res = 0;
if (someField.startsWith("BB"))
{
res = o.someField.compareTo(someField);
}
else
{
res = someField.compareTo(o.someField);
}
return res;
}
}
Mein gewünschtes Ergebnis:
AA
AB
BB9
BB7
BB3
CB3
CB4
Das bisherige Ergebnis:
AA
AB
CB3
BB9
BB7
BB3
CB4
Jonny