# Object-Array mit Comparator absteigend sortieren?



## Novanic (27. Mrz 2006)

Hi Leute,

bisher habe ich immer Arrays.sort(...) verwendet um mein Object-Array mit einem Comparator sortieren zu lassen.
Nun möchte ich mein Array aber auch absteigend sortieren lassen. Dafür gibt es keine so praktische Methode oder?

Oder gibt es sogar noch einen "besseren"/performanteren Weg ein Array zu sortieren als mit der Arrays.sort-Methode?

Vielen Dank im Voraus! 

Gruß Nova


----------



## AlArenal (27. Mrz 2006)

Arrays#sort(Object[] a, Comparator c)
Arrays#sort(Object[] a, int fromIndex, int toIndex, Comparator c)

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Arrays.html


----------



## Novanic (27. Mrz 2006)

"Arrays#sort(Object[] a, Comparator c)" <- nutze ich bereits zum aufsteigenden Sortieren.

"Arrays#sort(Object[] a, int fromIndex, int toIndex, Comparator c)" <- diese Methode sortiert doch auch nur aufsteigend, nur dass man hier zusätzlich das Intervall der zu sortierenden Elemente begrenzt werden kann oder nicht?

Danke schonmal. 

Gruß Nova


----------



## clemson (27. Mrz 2006)

hmm, ich denke, du musst "einfach" den Rückgabewert deiner compareTo methode anpassen. wenn du vorger -1 zurückgegeben hast, so muss jetzt 1 zurückgegeben werden, und umgekehrt...

dann wird das ganze in der umverkehrten reihenfolge sortiert...


----------



## Novanic (27. Mrz 2006)

Naja, bis jetzt hab ich noch garnichts zurückgegeben, da Arrays.sort ja alles so schön alleine sortiert. Aber wenns da keine andere simple Lösung für gibt, muss ich die Sortierung wohl selbst schreiben. :-(

Gruß Nova


----------



## AlArenal (27. Mrz 2006)

Novanic hat gesagt.:
			
		

> "Arrays#sort(Object[] a, Comparator c)" <- nutze ich bereits zum aufsteigenden Sortieren.



Und wo ist dann das Problem den Comparator umzuschreiben? Ist doch vermutlich eh ein Einzeiler..


----------



## Novanic (27. Mrz 2006)

Nein, das mit dem Comparator umschreiben geht leider nicht, da die Methode mit jeden übergebenen Comparator funktionieren soll...


----------



## Roar (27. Mrz 2006)

```
public class ReverseComparator implements Comparator<T> {

public ReverseComparator(Comparator<T> parent) {
this.parent = parent;
}

public int compareTo(T o1, T o2) {
return parent.compareTo(o1, o2) * -1;
}
}
```

unwichtes wurde ausgelassen.


----------



## Novanic (27. Mrz 2006)

Ja, stimmt so müsste das natürlich auch funktionieren. Danke für die schnelle Lösung! Cooles Forum! 

Danke. 

Gruß Nova


----------



## Roar (27. Mrz 2006)

sowas horstiges, es gibt ne methode Collections.reverseOrder(Comparator<T> comp) die wahrscheilnich genau das gleiche macht und dir den entsprechenden comparator zurückgibt. nimm die.


----------



## bygones (28. Mrz 2006)

Roar hat gesagt.:
			
		

> sowas horstiges, es gibt ne methode Collections.reverseOrder(Comparator<T> comp) die wahrscheilnich genau das gleiche macht und dir den entsprechenden comparator zurückgibt. nimm die.


nicht nur wahrscheinlich, sondern genau  die reverse methode sortiert genau andersrum, als es der comp bestimmt *g


----------

