Che cos'è una matrice dinamica?
Un array dinamico è una struttura di dati utilizzata nella programmazione informatica che contiene più oggetti di elaborazione come un singolo gruppo e può essere ridimensionata a piacimento per adattarsi a un numero variabile di oggetti. Il gruppo è contenuto in un singolo blocco contiguo di memoria, pertanto l'accesso agli elementi è efficiente e veloce. Le matrici dinamiche sono anche chiamate vettori o elenchi, a seconda del linguaggio del computer in cui vengono utilizzate. Nonostante questi nomi, ogni particolare elenco o vettore potrebbe non essere un array dinamico, poiché elenchi e vettori possono essere implementati in modo diverso dagli array e l'uno dall'altro.
C ++ contiene una singola classe di array dinamica chiamata vector, che risiede in un gruppo di classi chiamato libreria di modelli standard. L'array che supporta questa classe è accessibile dagli iteratori o dagli indici. La sua capacità di ridimensionare su richiesta è un grande vantaggio, ma può attirare i programmatori in un falso senso di sicurezza perché non è così robusto come sembra. L'array dinamico che supporta un vettore non può garantire che le richieste di accesso siano valide. Come gli array statici, gli array dinamici possono avere problemi di controllo dei limiti e di danneggiamento della memoria se un programma tenta di accedere alla memoria che non è stata allocata per loro.
Java contiene tre distinte classi di array dinamici: Vector, ArrayList e CopyOnWriteArrayList. Gli elementi dell'array sono accessibili solo tramite gli indici e il tentativo di accedere agli indici all'esterno dell'array in genere non causa problemi di danneggiamento della memoria. La classe Vector Java è approssimativamente equivalente alla classe vettoriale C ++ e non è sincronizzata per consentire l'accesso da più thread. ArrayList e CopyOnWriteArrayList, al contrario, sono entrambi thread-safe. Dei tre, CopyOnWriteArrayList è la classe più laboriosa, perché ricrea completamente l'array dinamico ogni volta che un nuovo valore viene scritto nell'array.
Le matrici dinamiche sono implementate essenzialmente allo stesso modo, indipendentemente dal linguaggio del computer coinvolto, ma a seconda di un linguaggio particolare potrebbero esserci altre funzionalità costruite su di esso. Come gli array statici, gli array dinamici non limitano il tipo di oggetto che può essere archiviato al loro interno, purché siano tutti dello stesso tipo di oggetto. Un programmatore non ha mai bisogno di accedere direttamente a un array dinamico; può sempre essere fatto attraverso una classe che avvolge l'array per un facile utilizzo. L'uso corretto di questi array può aiutare un programmatore con l'organizzazione dei dati all'interno del codice e anche con la creazione di codice comprensibile che si presta a una facile manutenzione.