Wann sollte ich die LinkedList
? Vor allem bei der Arbeit mit Stapeln oder bei der Arbeit mit Puffern. Wann sollte ich verwenden ArrayList
? Nur bei der Arbeit mit Indizes, sonst können Sie HashTable mit verknüpften Liste verwenden, dann erhalten Sie:
Hash-Tabelle + verknüpfte Liste
- Zugang mit Schlüssel O(1),
- Einfügen nach Taste O(1),
- Entfernen nach Taste O(1)
- und es gibt einen Trick, um RemoveAll / SetAll mit O(1) zu implementieren, wenn man Versionierung verwendet
Es scheint eine gute Lösung zu sein, und in den meisten Fällen ist es das auch, aber Sie sollten wissen: HashTable braucht viel Speicherplatz, und wenn Sie eine Liste mit 1.000.000 Elementen verwalten müssen, kann das zu einem Problem werden. Dies kann bei Serverimplementierungen vorkommen, bei Clients ist es selten der Fall.
Werfen Sie auch einen Blick auf Rot-Schwarz-Baum
- Zufälliger Zugriff Log(n),
- einfügen. Log(n),
- entfernen Log(n)
10 Stimmen
Siehe auch: Array versus verknüpfte Liste
12 Stimmen
Siehe dazu das Zitat des Autors von LinkedList stackoverflow.com/a/42529652/2032701 und Sie bekommen ein praktisches Gefühl für das Thema.
2 Stimmen
Niemals. Ich habe es einmal in meinen 25 Jahren Java-Programmierung getan und es im Nachhinein bereut.
0 Stimmen
Bjarne Stroustrup hat dies auch ausgiebig für C++ diskutiert
std::vector
(wie JavaArrayList
) undstd::list
(wie JavaLinkedList
).