Java-Datenstruktur mit effizientem Hinzufügen, Löschen und Zufall

Ich benötige eine Java-Datenstruktur, mit der ich ein zufälliges Objekt effizient hinzufügen, löschen und darauf zugreifen kann.

Das funktioniert nicht:

ArrayList verfügt über effiziente Funktionen zum Hinzufügen (konstante Zeit) und für den wahlfreien Zugriff (nur "Abrufen" mit einer zufälligen Ganzzahl). Das Löschen kann jedoch eine lineare Zeit in Anspruch nehmen, da möglicherweise die gesamte Liste danach durchsucht werden muss.

TreeSet oder HashSet haben effizientes Hinzufügen und Löschen, aber ich kann nicht herausfinden, wie man ein zufälliges Objekt erhält.

Irgendwelche Ideen?

Theoretisch würde ein B-Baum funktionieren, wenn ich den Baum selbst mit zufälligen Links oder Rechten durchqueren könnte, aber ich glaube nicht, dass mir eine Standard-Java-Klasse diese Fähigkeit verleiht.

Ich bin bereit, eine Drittanbieter-Bibliothek zu verwenden, wenn in den Standard-Java-Klassen nichts funktioniert.

Ich muss weder Duplikate oder Nullen unterstützen, noch muss es threadsicher sein.

Vielen Dank.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage