Daniel Thoma: Comparer Klassen. ArrayList nach 2 Kriterien sortieren

Beitrag lesen

Hallo sco0ter,

Wenn Du einen stabilen Sortieralgorithmus, d.h. einen, der die Reiehenfolge gleicher Elemente nicht ändert, verwendest, kannst Du Deinen Array einfach zweimal mit verschiedenen kriterien sortieren.
Der Standardalgorithmus bei Java erfüllt dieses Kriterium, das macht es wahrscheinlich, dass es der bei .NET auch tut ;-)

Ich habe die Schnittstelle IComparable implementiert und nun muss ich obiges Problem nur noch der Methode CompareTo(x) beibringen.

Die oben aufgezeigte Lösung klappt natürlich nicht mit dieser Schnittstelle, da müsste man einen Comparator verwenden. Das Interface heißt dann vermutlich IComparator...

Es ist aber natürlich problemlos möglich, einen Vergleich mit mehreren Kriterien zu definieren:
Seien compareTo1(x) und cpmpareTo2(x) die Vergleiche nach je einem Kriterium:

int comparTo(x) {
  int result = compareTo1(x);
  if (result == 0) {
    result = compareTo2(x);
  }
  return result;
}

Noch als Anmerkung: Nach boolschen Werten kann man natürlich schneller sortieren, indem man die Elemente in zwei Arrays trennt oder vorher bestimmt, wie viel Elemente mit true und mit false vorkommen und dann ausrechnen kann, in welchen Teil des Arrays ein Element muss.

Grüße

Daniel