Liste mit Vergleichbaren Vs TreeSet
Option 1: Machen Sie eine Liste, die sich um Vergleichbare und Sortieren Sie Sie mithilfe von Sammlungen.sort(Liste l) jedes mal, wenn Sie fügen Sie einen Wert hinzu.
Option 2: Stellen Sie ein TreeSet (die hält sich sortiert die ganze Zeit).
Was wird schneller sein? Ich Frage dies, weil die Liste gibt mir die Möglichkeit, ListIterator, die ich brauche, in meinem Fall, da es mir erlaubt, ein element während der Iteration.
- Meine Daten-Struktur über rund 100 bis 200 benutzerdefinierte Objekte.
- wie oft planen Sie, wie Sie aktualisieren Sie Ihre Sammlung [relativ zu anderen OPS]? auch, TreeSet, dass Duplikate, Liste nicht - was ist Ihre Politik über dieses Thema?
- sorry, ich sagte etwas falsch. Eigentlich meine Sammlungen aktualisiert werden Recht Häufig für die ersten 10% der Programm-Laufzeit, nach, dass Sie nicht brauchen, um sortiert werden mehr, da die Anzahl der Objekte werden mehr oder weniger konstant. Danach werde ich die Aktualisierung der Eigenschaften der Objekte.
InformationsquelleAutor aps | 2011-08-07
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die wichtigsten Unterschiede:
Um ein element einzufügen, wenn die Iteration ohne eine
ConcurrentModificationException
Sie tun können:Sammlungen.Art nutzt eine modifizierte merge-sort mit nlog(n) Sortieren Zeit. Wenn Sie die Methode aufrufen, die auf jeder Zusatz, Sie könnten am Ende mit n^2log(n) Zeit. In der Erwägung, dass die Einfügung in TreeSet gewährleistet ist log(n). Also, wenn Sie rufen es auf jedem Zusatz wird es n.log(n). Also ich würde vorschlagen, mit TreeSet statt. Aber TreeSet nicht erlaubt Duplikate, so dass könnte Ihre Entscheidung beeinflussen.
Wenn Sie mit der Liste, dann anstelle der Verwendung von Sammlungen.Art, es ist eine Sache, die Sie tun können, um zu optimieren; wie Sie wissen, dass jedes mal, wenn Sie fügen Sie das element in der Liste, die Liste ist schon sortiert, so dass die Verwendung von insertion sort hier wird Ihnen eine bessere Leistung, als insertion sort führt besser in solchen Fällen.
Verwenden TreeSet hier.
Hinzufügen zu TreeSet ist eine
log(n)
Betrieb. Hinzufügen zur Liste ist const Zeit, aber die Sortierung ist esn log(n)
.