Es hängt alles davon ab, welche Art von Operation Sie während der Iteration ausführen. Alle Datenstrukturen haben einen Kompromiss zwischen Zeit und Speicher. Abhängig von unseren Anforderungen sollten wir den richtigen DS auswählen. Es gibt also Fälle, in denen LinkedList schneller als Array ist und umgekehrt. Betrachten Sie die drei grundlegenden Operationen für Datenstrukturen.
Da das Array eine indexbasierte Datenstruktur ist, dauert die Suche nach array.get (index) O (1), während die verknüpfte Liste nicht der Index DS ist. Sie müssen also zum Index wechseln, wobei der Index <= n, n die Größe der verknüpften Liste ist. Das Array ist also schneller als die verknüpfte Liste, wenn Sie zufälligen Zugriff auf Elemente haben.
Frage: Was ist die Schönheit dahinter?
Da Arrays zusammenhängende Speicherblöcke sind, werden beim ersten Zugriff große Teile davon in den Cache geladen. Dies macht den Vergleich auf verbleibende Elemente des Arrays vergleichsweise schnell, da der Zugriff auf die Elemente in der Array-Referenzlokalität ebenfalls zunimmt und somit weniger Fang erfolgt Fehlt, bezieht sich die Cache-Lokalität auf die Operationen, die sich im Cache befinden und daher im Vergleich zum Speicher viel schneller ausgeführt werden. Im Array maximieren wir im Grunde genommen die Wahrscheinlichkeit, dass sich sequentielle Elemente im Cache befinden. Während verknüpfte Listen nicht unbedingt in zusammenhängenden Speicherblöcken enthalten sind, gibt es keine Garantie dafür, dass Elemente, die nacheinander in der Liste erscheinen, tatsächlich nahe beieinander im Speicher angeordnet sind. Dies bedeutet weniger Cache-Treffer, z
Dies ist in LinkedList einfach und schnell, da das Einfügen eine O (1) -Operation in LinkedList (in Java) im Vergleich zum Array ist. Wenn das Array voll ist, müssen wir den Inhalt in ein neues Array kopieren, wenn das Array voll wird, wodurch das Einfügen eines Element in ArrayList von O (n) im schlimmsten Fall, während ArrayList auch seinen Index aktualisieren muss, wenn Sie irgendwo etwas einfügen, außer am Ende des Arrays. Im Fall einer verknüpften Liste müssen wir die Größe nicht ändern, sondern nur Zeiger aktualisieren.
Es funktioniert wie Einfügungen und ist in LinkedList besser als in Arrays.