Ich habe eine Liste von rund 100.000 Mitarbeitern in Java. Jetzt möchte ich ein bestimmtes Mitarbeiterobjekt schnell aus der Liste löschen. Welche Möglichkeiten gibt es, ohne die ganze Liste zu durchlaufen? (Wenn ich jedes Objekt iteriere, vergleiche die Details dann lösche: Dieses Szenario benötigt viel Zeit)Wie lösche ich ein bestimmtes List-Objekt in Java?
Antwort
Sie brauchen ein Mittel, um das Objekt schnell zu finden. Sie könnten
- haben eine Arraylist sortieren und dann eine binäre Suche mit Collections.binarySearch
O(log N)
Hinweis ausführen: tatsächlich ein Element aus einer Arraylist zu entfernen, istO(n)
Während LinkedList alsO(1)
für entfernen, eine binäre Suche auf es wäre sinnlos, dh viel langsamer alsO(N)
- könnten Sie einen Hash-Satz von Mitarbeiter stattdessen haben und Entfernung wäre
O(1)
amortisiert. Sie können eineLinkedHashSet
verwenden, wenn Sie eine Reihenfolge wie Reihenfolge der Einfügung beibehalten möchten. - Sie könnten das Objekt veränderbar machen und ein Feld wie
enabled
haben, das Sie auffalse
setzen, anstatt es tatsächlich zu entfernen. Man könnte es irgendwann später als Batch-Job entfernen (über Nacht oder am Wochenende)
@TimBiegeleisen SO ist nicht Quora obwohl https://www.quora.com/Is-it-true-that-after-Brexit-Pluto-will-be-a-a-planet- in-UK wieder;) –
Jetzt habe ich ein bestimmtes Mitarbeiter-Objekt aus der Liste löschen mag ...
Sie können nur verwenden List.remove diese
zu tun ... schnell
In der Praxis sogar Obwohl das Entfernen des Elements möglicherweise eine Operation O(1)
ist, ist das Iterieren über die gesamte Länge der Liste O(n)
und ist, wie Sie vermuten, nicht sehr schnell.
Ich fühle, dass Ihr Problem besser durch die Macht einer hashmap bedient werden würde. Dies hat konstante Nach-und Nachlaufzeit. Die LinkedHashMap Klasse könnte Ihren Bedürfnissen entsprechen. Die Einfügereihenfolge wird auf die gleiche Weise beibehalten wie bei einer verknüpften Liste, aber es wird auch ständig eingefügt und gelöscht.
- 1. Wie lösche ich ein bestimmtes Array?
- 2. C++ Wie lösche ich ein bestimmtes Objekt in einem Vektor?
- 3. Wie lösche ich eine JList in Java?
- 4. Wie lösche ich ein Wörterbuch?
- 5. Wie lösche ich ein Array in Javascript?
- 6. Wie lösche ich ein ItemizedOverlay in Android?
- 7. Wie lösche ich ein Plugin in Linux?
- 8. Wie lösche ich ein Objekt in JSON?
- 9. Wie lösche ich ein Objekt in C++?
- 10. Wie bekomme ich ein bestimmtes Klassenobjekt
- 11. Zeitzonenumrechnung für ein bestimmtes Datum in Java
- 12. Wie lösche ich ein Problem in der SonarQube-Datenbank?
- 13. Wie lösche ich ein bestimmtes NuGet-Paket über die Befehlszeile vom lokalen Cache?
- 14. Wie füge ich Werte in ein bestimmtes HTML-Tag mit jsoup in Java ein?
- 15. Wie lösche ich ein Paket von HackageDB?
- 16. Wie still Java JDK in ein bestimmtes Verzeichnis auf Windows
- 17. Wie lösche ich einen Java-Arbeitssatz in Eclipse
- 18. Wie lösche ich ein JPEG-Bild?
- 19. Wie lösche ich ein ForeignKey-Set?
- 20. Wie fahre ich ein bestimmtes Szenario Behat
- 21. Wie finde ich ein bestimmtes XSS-Loch?
- 22. UIDocumentPickerViewController: Wie öffne ich ein bestimmtes Unterverzeichnis?
- 23. Wie kann ich in Java feststellen, ob ein Char-Array ein bestimmtes Zeichen enthält?
- 24. Wie lösche Zeilen in Java Swing?
- 25. Wie lösche ich ein Verzeichnis von Verzeichnissen mit Ant?
- 26. Wie lösche ich JTextArea?
- 27. Wie installiere ich ein bestimmtes JDK unter Mac OS X?
- 28. Wie lösche ich ein importiertes Snippet in Visual Studio?
- 29. Wie lösche oder schließe ich ein Diagramm in Matplotlib?
- 30. Wie lösche ich ein Objekt mit PK in nhibernate?
UR_object_List.remove (Objekt) –