Ich kann sehen, dass sich ein Sortierobjekt Sorting
mit einer Quicksort- Methode quickSort
darauf befindet.
Was wäre ein Codebeispiel für die Verwendung eines Arrays von Objekten beliebigen Typs? Es sieht so aus, als müsste ich eine Implementierung des Orderable
Merkmals übergeben, bin mir aber der Syntax nicht sicher.
Außerdem würde ich Antworten bevorzugen, die dies auf die "Scala-Art" tun. Ich weiß, dass ich nur eine Java-Bibliothek verwenden kann.
Mit Scala 2.8 oder höher ist Folgendes möglich:
das verwendet java.util.Arrays.sort , eine Implementierung von quicksort.
quelle
Heutzutage funktioniert dieser auch:
List(3,7,5,2).sorted
quelle
List(3,7,5,2).sorted.reverse
?Wenn Sie nur Dinge sortieren möchten, aber nicht speziell mit dem Sortierobjekt verheiratet sind, können Sie die Sortiermethode von List verwenden. Es wird eine Vergleichsfunktion als Argument verwendet, sodass Sie sie für alle gewünschten Typen verwenden können:
Listen gelten wahrscheinlich als "schuppiger" als Arrays.
Aus den Scala-API- Dokumenten :
quelle
Das "Standard" -Array von Scala ist eine veränderbare Datenstruktur, die dem Array von Java sehr nahe kommt. Im Allgemeinen bedeutet dies, dass ein "Array" nicht sehr skaliert ist, selbst wenn veränderbare Datenstrukturen vorhanden sind. Es erfüllt jedoch einen Zweck. Wenn das Array der richtige Datentyp für Ihre Anforderungen ist, sortieren Sie es so. Es gibt übrigens andere Sortiermethoden für die Objektsortierung.
Ich glaube, ich habe gerade begriffen, was Ihre Frage ist ... Sie müssen keinen impliziten Parameter übergeben (es ist schließlich implizit). Dieser Parameter besagt, dass es eine Möglichkeit geben muss, den Typ K in einen geordneten [K] umzuwandeln. Diese Definitionen existieren bereits für Scalas Klassen, sodass Sie sie nicht benötigen.
Für eine beliebige Klasse können Sie dies folgendermaßen definieren:
Wenn Person von Anfang an befohlen worden wäre, wäre dies kein Problem:
quelle
Während die akzeptierte Antwort nicht falsch ist, bietet die Quicksort-Methode mehr Flexibilität. Ich habe dieses Beispiel für Sie geschrieben.
Dies zeigt, wie implizite und explizite Konvertierungen von Foo in eine Klasse, die Ordered [Foo] erweitert, verwendet werden können, um verschiedene Sortierreihenfolgen zu erhalten.
quelle
Ich bevorzuge die Benutzersortierung util
Beispiel:
Bitte lesen Sie diese für weitere Informationen Sorting util
quelle