Wie sortiere ich eine ArrayList<Long>
in Java in absteigender Reihenfolge?
98
Hier ist ein Weg für Sie list
:
list.sort(null);
Collections.reverse(list);
Oder Sie können Ihre eigene implementieren, Comparator
um den umgekehrten Schritt zu sortieren und zu eliminieren:
list.sort((o1, o2) -> o2.compareTo(o1));
Oder noch einfacher verwenden, Collections.reverseOrder()
da Sie nur umkehren:
list.sort(Collections.reverseOrder());
l1 > l2 ? -1 : l1 == l2 ? 0 : 1
Dieser Code ist lächerlich. Verwenden Sieo1.compareTo(o2)
dann.o2.compareTo(o1)
hier sein muss :)list.sort((o1, o2) -> o2.compareTo(o1))
quelle
Sie können den folgenden Code verwenden, der unten angegeben ist.
oder wenn Sie einen benutzerdefinierten Komparator verwenden möchten, können Sie diesen wie unten angegeben verwenden
Wobei CustomComparator eine Vergleichsklasse ist, die das in der Liste vorhandene Objekt vergleicht.
quelle
Java 8
Das in Java 8 zu tun ist so viel Spaß und einfacher
Lambda-Ausdrücke rocken hier !!!
Falls Sie mehr als eine Zeilenlogik zum Vergleichen von a und b benötigen , können Sie diese so schreiben
quelle
Normal sortieren und verwenden
Collections.reverse();
quelle
Für Lamdas, bei denen sich Ihr langer Wert irgendwo in einem Objekt befindet, empfehle ich die Verwendung von:
oder noch besser:
quelle
Sortieren und dann umkehren.
quelle
Ein allgemeinerer Ansatz zur Implementierung unseres eigenen Komparators ist unten aufgeführt
quelle
Durch Verwendung
Collections.sort()
mit einem Komparator, der die absteigende Reihenfolge liefert. Siehe Javadoc für Collections.sort .quelle
Der folgende Ansatz sortiert die Liste in absteigender Reihenfolge und behandelt auch die ' Null' -Werte. Nur für den Fall, dass Sie Nullwerte haben , löst Collections.sort () eine NullPointerException aus
quelle
Sie können a auch
ArrayList
mit aTreeSet
anstelle von a sortierencomparator
. Hier ist ein Beispiel aus einer Frage, die ich zuvor für ein ganzzahliges Array hatte. Ich verwende "Zahlen" als Platzhalternamen für dieArrayList
.quelle
TreeSet
speichert keine doppelten Werte.Es gibt also etwas, das ich ansprechen möchte, das ich für wichtig halte und das Sie berücksichtigen sollten. Laufzeit und Speicher. Angenommen, Sie haben eine Liste und möchten sie sortieren. Nun, Sie können, es gibt eine integrierte Sortierung, oder Sie könnten Ihre eigene entwickeln. Dann sagst du, willst du die Liste umkehren. Das ist die Antwort, die oben aufgeführt ist.
Wenn Sie diese Liste erstellen, ist es möglicherweise sinnvoll, eine andere Datenstruktur zum Speichern zu verwenden und sie dann einfach in einem Array abzulegen.
Haufen machen genau das. Sie filtern Daten ein und sie verarbeiten alles. Dann können Sie alles aus dem Objekt entfernen und es wird sortiert.
Eine andere Möglichkeit wäre zu verstehen, wie Karten funktionieren. Oft hat eine Map oder HashMap, wie man sie nennt, ein zugrunde liegendes Konzept.
Zum Beispiel ... Sie geben eine Reihe von Schlüssel-Wert-Paaren ein, wobei der Schlüssel lang ist, und wenn Sie alle Elemente hinzufügen, können Sie Folgendes tun:
.keys
und es wird automatisch eine sortierte Liste an Sie zurückgegeben.Es hängt davon ab, wie Sie die Daten verarbeiten, bevor Sie meiner Meinung nach mit dem Sortieren und den anschließenden Umkehrungen fortfahren
quelle
Die Vergleichsmethode des Komparators kann verwendet werden, um die Objekte zu vergleichen, und dann
reversed()
kann die Methode angewendet werden, um die Reihenfolge umzukehren -quelle