Wie man Liste von Satz-und Komparator
Was ist das "gute" (und warum ?) Lösung, um eine List
aus einer Set
sortiert und gegen eine bestimmte Comparator
?
Diese Frage ist unklar. Zum Beispiel, bekomme ich eine Liste aus einem Satz und einem Komparator, durch ignorieren der Komparator. Das ist eine "gute" Lösung ... in dem Sinne, dass es ist schneller als Lösungen, die mit dem Komparator.
Ich update meine Frage
Sind Sie sicher, dass Sie brauchen eine Liste? Vielleicht ein SortedSet tun würde.
Ich update meine Frage
Sind Sie sicher, dass Sie brauchen eine Liste? Vielleicht ein SortedSet tun würde.
InformationsquelleAutor Manuel Selva | 2010-10-13
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Falsche Antwort, das funktioniert nicht als ArrayList-Konstruktor Sortieren nicht etwas, dem Sie noch nicht verwendet haben, Komparator, also wie wird es sortiert? Verwenden Sie entweder Sammlungen.sort() oder TreeSet, wie in anderen Antworten.
Behoben haben die Antwort zu beinhalten den Aufruf zu Sortieren.
InformationsquelleAutor Tyler Treat
Einfach konstruieren. Die
ArrayList
hat eine Konstruktor der Einnahme von anderenCollection
.InformationsquelleAutor BalusC
Entweder:
oder:
InformationsquelleAutor iirekm
Vorausgesetzt, man beginnt mit einer unsortierten set oder eine set-sortiert auf einer anderen Reihenfolge, das folgende ist wahrscheinlich die meisten effizient unter der Annahme, dass benötigen Sie eine Bearbeitbare Liste.
Wenn eine unveränderliche Liste ist akzeptabel, dann ist die folgende ist ein bisschen schneller:
In der ersten version
Collections.sort(...)
kopiert die Inhalte der Liste in ein array, sortiert das array und kopiert die sortierten Elemente hinten an die Liste. Die zweite version ist schneller, da es nicht kopieren müssen die sortierten Elemente.Aber um ehrlich zu sein, den Unterschied in der Leistung ist wahrscheinlich nicht signifikant. In der Tat, wie der input-set-Größen größer werden, die Leistung wird dominiert von der
O(NlogN)
Zeit, die zum Sortieren. Die Vervielfältigung Schritte sindO(N)
und reduzieren Bedeutung, da N wächst.mit
Arrays.asList(array)
vermeidet das kopieren erfolgt mit Hilfe des Liste-iterator.Aaah, wie zusätzliche kopieren kann wichtig sein, nur für sehr große Daten-sets.
ja. Aber wie ich schon erwähnte, als N wird wirklich groß, die Kosten der Sortierung dominiert die Kosten für das kopieren.
InformationsquelleAutor Stephen C
Bekommen Sie so einen
List
wenn Sie eineSet
:Nicht sicher, was Sie erwarten zu tun, mit der
Comparator
. Wenn dieSet
sortiert, die Liste enthält die Elemente in sortierter Reihenfolge.Hammarström - oder Sie Sortieren es, wenn/durch einfügen der Elemente eins nach dem anderen : insertion sort.
Und was passiert, wenn Sie gehen über eine sortierte Menge, mein Erster Vorschlag.
InformationsquelleAutor Michael Borgwardt