Listen Sie die Implementierung auf, die die Reihenfolge beibehält

Gibt es eine bestehendeList Implementierung in Java, bei der die Reihenfolge basierend auf den angegebenen Werten beibehalten wirdComparator?

Etwas, das auf folgende Weise verwendet werden kann:

Comparator<T> cmp = new MyComparator<T>();
List<T> l = new OrderedList<T>(cmp);
l.add(someT);

damitsomeT wird so eingefügt, dass die Reihenfolge in der Liste entsprechend beibehalten wirdcmp

(Auf @andersoj Vorschlag vervollständige ich meine Frage mit einer weiteren Anfrage)

Außerdem möchte ich in der Lage sein, die Liste in sortierter Reihenfolge zu durchlaufen, ohne die Elemente zu entfernen, d.h.

T min = Const.SMALLEST_T;
for (T e: l) {
  assertTrue(cmp.compare(min, e) >= 0);
  min = e;
}

sollte passieren.

Alle Vorschläge sind willkommenCollections.sort auf der ungeordneten vollen Liste) würde ich jedoch etwas in bevorzugenjava.* oder irgendwannorg.apache.* da es derzeit schwierig ist, neue bibliotheken einzuführen.

Hinweis: (UPDATE4) Ich erkannte, dass Implementierungen dieser Art von Liste eine unzureichende Leistung haben würden. Es gibt zwei allgemeine Ansätze:

Verwenden Sie verknüpfte Struktur (Art) B-Baum oder ähnlichesArray und Einfügung verwenden (mit binärer Suche)

Nr. 1 hat Probleme mit CPU-Cache-Fehlern. Nr. 2 hat Probleme mit dem Verschieben von Elementen im Array.

UPDATE2: TreeSet funktioniert nicht, da der mitgelieferte Komparator verwendet wird (MyComparator) auf Gleichheit zu prüfen und davon auszugehen, dass die Elemente gleich sind, und sie auszuschließen. Ich brauche diesen Komparator nur zum Ordnen, nicht zum Filtern der "Eindeutigkeit" (da die Elemente aufgrund ihrer natürlichen Reihenfolge nicht gleich sind)

UPDATE3: PriorityQueue funktioniert nicht alsList (wie ich es brauche) Da es keine Möglichkeit gibt, es in der Reihenfolge zu durchlaufen, in der es "sortiert" ist, müssen Sie die Elemente aus der Sammlung entfernen, um sie in der sortierten Reihenfolge zu erhalten.

AKTUALISIEREN:

Ähnliche Frage:
Eine gute sortierte Liste für Java
Sortierte Array-Liste in Java

Antworten auf die Frage(3)

Ihre Antwort auf die Frage