Wie kann ich Sortieren ResultSet in java?
Kann ich nicht tun, UM VON der db übrigens
- 1. Wie groß ist der Datensatz? 2. Warum ist
ORDER BY
nicht eine option?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann ich nicht tun, UM VON der db übrigens
ORDER BY
nicht eine option?Du musst angemeldet sein, um einen Kommentar abzugeben.
Verschieben Sie die Daten aus dem ResultSet in das, was Objekt-Darstellung, die Sie möchten, und Sortieren Sie die Daten, genau wie alle anderen Daten zu diesem Zeitpunkt.
Wenn Sie machen verwenden von Sammlungen.Art der Durchführung der Sortierung an einem komplexen Objekt, das Sie benötigen, um zu implementieren Komparator.
Extrahieren Sie die Ergebnisse in eine
List<YourResultType>
und verwendenCollections.sort()
. Wenn Sie nur jemals brauchen, um eine Sortierung in einer "natürlichen" Ordnung, dann implementierenComparable<T>
im Ergebnis-Typ selbst... sonst implementierenComparator<T>
einmal pro Sortierreihenfolge, und übergeben Sie eine Instanz der entsprechenden Komparator zuCollections.sort()
.Tun Sie
ORDER BY
in der DB.Sollten Sie überdenken warum Sie kann das nicht tun. Wenn jemand fragte: "wie füge ich eine Schraube mit einem hammer? Ich kann nicht verwenden Sie einen Schraubendreher durch die Art und Weise" wäre es unverantwortlich, nicht, Sie zu überreden, dass der Schraubendreher war die richtige Lösung in der ersten Instanz.
Wenn Sie wirklich, wirklich nicht um das Ergebnis-set nativ, Sie sind aus Glück heraus. Es ist nur ein stream aus der Datenbank, so dass Sie würde haben, es zu Lesen alle in ein temporäres
List
, Sortierung, die Sammlung, und dann gehen von dort aus. Für kleine Ergebnismengen dies ist nicht wahrscheinlich ein problem zu sein, aber für den großen ist dies wahrscheinlich zu verhängen, die durchaus einen Treffer auf Effizienz.ResultSet
. Die Ergebnismenge wird durch die definition der Zeilen, die kommen zurück von Ihrer select-Anweisung, in der Reihenfolge, wie die select-Anweisung zurückgegeben. Es klingt wie Sie haben ein architektonisches problem, da sollten Sie nicht wollen, dies zu tun. Einmal haben Sie es in IhrerList
, warum nicht weiter mit den Elementen direkt?Ist es möglich, die Sortierung der Datenbank, bevor Sie die Abfrage ausführen, und speichern Sie dann in der Ergebnismenge enthalten ist.
SELECT * FROM tableName ORDER BY columnName ASC
Ist so etwas wie das, was Sie wollen?
Wie es aussieht, müssten Sie verantwortlich für die Umsetzung der ResultSet-Schnittstelle mit einem benutzerdefinierten Objekt, das würde Ihnen die Funktionalität, die Sie suchen....sorry.
Dies kann gelöst werden, in der Abfrage selbst. Sie bestellen, indem Sie eine berechnete Spalte. Die berechnete Spalte konvertiert, der Natürliche Wert, um einen Wert numerisch sortiert oder Alphabet Sortieren. Sie definieren können, eine "convert" - Funktion und rufen diese Funktion in der order by-Klausel.
Auf einer bestimmten Stufe der natürlichen numerische Konvertierung muss unabhängig davon passieren, ob im code oder in der Datenbank. Ein Algorithmus ist ein Algorithmus, egal wo es läuft.