Das Iterieren über aufeinanderfolgende Elemente eines Arrays wird im Allgemeinen als effizienter angesehen als das Iterieren über aufeinanderfolgende verknüpfte Listenelemente aufgrund von Caching.Java-Objektarrays - Verwendung des Hardware-Speichercaches
Dies ist zweifellos wahr, solange Elemente elementare Datentypen haben. Aber wenn die Elemente Objekte sind, werden nach meinem Verständnis nur die Referenzen auf die Objekte im zusammenhängenden Speicherbereich des Arrays gespeichert (der wahrscheinlich zwischengespeichert wird), während die tatsächlichen Objektdaten irgendwo im Hauptspeicher gespeichert werden und nicht können effektiv zwischengespeichert werden.
Da Sie normalerweise nicht nur über den Container iterieren, sondern bei jeder Iteration auch auf Objektdaten zugreifen müssen, bringt dies nicht mehr oder weniger den Leistungsvorteil des Arrays über die Liste nach sich?
Bearbeiten: Der Kommentar über verschiedene Szenarien stark variiert ist wahrscheinlich richtig. Sehen wir uns einen bestimmten an: Sie suchen nach einem bestimmten Objekt im Container. Um es zu finden, müssen Sie eine gegebene Zeichenfolge mit einer anderen Zeichenfolge vergleichen, die eine Klassenvariable des Objekts ist.
* "Ich verstehe, dass nur die Verweise auf die Objekte im zusammenhängenden Speicherbereich des Arrays gespeichert werden" * Richtig. Die Antwort auf den Rest der Frage lautet: "Es kommt darauf an." Verschiedene Szenarien variieren stark, es gibt keine allgemeine Antwort auf diese Frage. –
Vielleicht. Interessante Frage allerdings; Aber es würde mich eher überraschen, wenn Sie mehr hilfreiche Antworten als Downvotes und enge Anfragen erhalten. – GhostCat
Das IMO-Array bietet immer noch einen schnelleren Zugriff, da weniger Operationen erforderlich sind, um den nächsten Knoten zu erreichen als mit LinkedList. –