Java/Array: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 166:
Negli altri casi, in genere, non vale la pena di scegliere un tipo array al posto di una collezione, se l'<nowiki/>''unica'' ragione è ottimizzare il codice che accede alle celle, cioè per usare l'accesso diretto alla memoria come "scorciatoia" che eviti le invocazioni dei metodi <code>get</code> e <code>set</code>. Infatti, le macchine virtuali odierne adottano delle tecniche di ottimizzazione (come l'<nowiki/>''inlining'' dei metodi di dimensioni ridotte) che rendono superfluo un accorgimento come questo. Inoltre, la classe [http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html java.util.ArrayList] esibisce buone prestazioni per la maggior parte delle applicazioni in cui sia necessario disporre di una lista ad accesso casuale, e la classe [http://download.oracle.com/javase/7/docs/api/java/util/LinkedList.html java.util.LinkedList] è sicuramente più facile da usare di un array nel caso sia necessario uno [[w:it:stack|stack]] o una [[w:it:Coda (informatica)|coda]].
 
Nella scelta si deve tenere conto anche del fatto che lo strato di astrazione aggiuntivo permette ai client di fornire una implementazione personalizzata, e ciò rende la struttura a oggetti più resistente nei confronti delle eventuali modifiche future che potrà essere necessario implementare nel programma. In certi casi, una collezione personalizzata permette di risparmiare memoria, in quanto non tutto il contenuto deve risiedere in memoria. Si pensi ad una lunga sequenza di elementi uguali tra loro: in alternativa, si può conservare una sola copia del valore, e simulare una collezione di grandi dimensioni manipolando gli indici.<ref>Per maggiori informazioni, vedi [http://download.oracle.com/javase/6/docs/api/java/util/Collections.html#nCopies(int, T%20T) java.util.Collections.nCopies()]</ref> Un'altra implementazione può accedere direttamente alle proprietà di un oggetto o ai campi di un database, mascherandolo dietro l'interfaccia della collezione, invece di utilizzare la memoria come passaggio intermedio (e obbligatorio) per la memorizzazione dei dati.
 
== Note ==