Tutto dipende dal tipo di operazione che stai eseguendo durante l'iterazione, tutte le strutture di dati sono in bilico tra tempo e memoria e in base alle nostre esigenze dovremmo scegliere il DS giusto. Quindi ci sono alcuni casi in cui LinkedList è più veloce di array e viceversa. Considera le tre operazioni di base sulle strutture di dati.
Poiché l'array è una struttura di dati basata sull'indice, la ricerca dell'array.get (indice) richiederà O (1) mentre l'elenco collegato non è indice DS, quindi dovrai attraversare fino all'indice, dove indice <= n, n è la dimensione dell'elenco collegato, quindi l'array è più veloce dell'elenco collegato quando ha accesso casuale agli elementi.
Q. Quindi qual è la bellezza dietro questo?
Poiché gli array sono blocchi di memoria contigui, grossi pezzi di questi verranno caricati nella cache al primo accesso, ciò rende relativamente rapido l'accesso agli elementi rimanenti dell'array, tanto quanto accediamo agli elementi nella località dell'array di riferimento aumenta anche in questo modo si riduce la cattura manca, la località cache si riferisce alle operazioni che si trovano nella cache e quindi eseguono molto più velocemente rispetto alla memoria, fondamentalmente nell'array massimizziamo le possibilità di accesso sequenziale agli elementi nella cache. Mentre gli elenchi collegati non sono necessariamente in blocchi di memoria contigui, non vi è alcuna garanzia che gli elementi che appaiono in sequenza nell'elenco siano effettivamente disposti uno vicino all'altro in memoria, ciò significa un minor numero di accessi alla cache, ad es.
Questo è facile e veloce in LinkedList poiché l'inserimento è un'operazione O (1) in LinkedList (in Java) rispetto all'array, considera il caso quando l'array è pieno, dobbiamo copiare il contenuto nel nuovo array se l'array è pieno che rende l'inserimento di un elemento in ArrayList di O (n) nel peggiore dei casi, mentre ArrayList deve anche aggiornare il suo indice se si inserisce qualcosa ovunque tranne alla fine dell'array, in caso di elenco collegato non è necessario ridimensionarlo, è sufficiente aggiorna i puntatori.
Funziona come inserimenti e meglio in LinkedList di array.