Wir haben TreeSet, TreeMap, aber nicht TreeList in der Java-Sammlung. Warum?


Beste Antwort

Denken Sie über die Unterschiede zwischen einer Liste, einer Karte und einem Satz nach.

Eine Karte ist eine Struktur, mit der Sie Dinge mit einem Schlüssel nachschlagen können. Wenn Sie für Lookups entwerfen, stellen Sie fest, dass es viele Schlüsselvergleiche gibt und dass Lookups schnell sein müssen. Ein Baum beschleunigt den Schlüsselvergleichsprozess, indem er die Schlüssel in Zweigen organisiert. Dadurch wird die Anzahl der Schlüsselvergleiche verringert müssen erstellt werden.

In einem Set gibt es keine doppelten Elemente. Jedes Mal, wenn Sie ein Element hinzufügen, müssen Sie es mit den vorhandenen Elementen vergleichen, um festzustellen, ob es „doppelt“ ist. Jetzt haben Sie wieder das gleiche Problem wie die Karte. Sie verwenden also einen Baum, um Ihre Elemente zu organisieren, um Vergleiche zu reduzieren.

Eine Liste hat nur eine Reihenfolge, daher kann eine Liste einfach so gestaltet werden, dass dies nicht der Fall ist. “ Es sind keine Vergleiche erforderlich, um das nächste (oder möglicherweise vorherige) Element in der Listenreihenfolge zu erhalten.

Ein Baum kann Ihnen zwar beim Erstellen einer besseren Karte oder eines besseren Satzes helfen, aber nicht wirklich beim Erstellen einer besseren Liste .

Wenn Sie über eine sortierte -Liste sprechen, in der Elemente in Sortierreihenfolge in die Liste eingefügt werden, kehren Sie jetzt zu Vergleichen zurück Zum Sortieren kann der Baum beim Erstellen einer sortierten Liste helfen.

Antwort

Nun, eine Liste ist geordnet Sammlung – was bedeutet, dass Sie die Möglichkeit haben müssen, zufällig auf das i-te Element zuzugreifen. Wenn die Sammlung die Elemente intern mischt, stimmt die Einfügereihenfolge nicht mit der Reihenfolge der Elemente in der internen Datenstruktur überein. Sie können sich also nicht mehr auf den indexbasierten Zugriff verlassen. Daher hat Sun keine SortedList- oder TreeList-Klasse bereitgestellt. Mit Collections.sort (..) können Sie dasselbe erreichen.

Apache commons-collection stellt eine TreeList-Klasse bereit ( TreeList (Commons Collections 3.2.1 API) ), aber es ist keine sortierte Liste und wird so genannt, weil sie eine Baumdatenstruktur verwendet, um die Elemente intern zu speichern

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.