La scorsa lezione abbiamo visto cosa sia un oggetto, come si crea e come si usa.
Oggi vedremo due strutture fondamentali per tutti i linguaggi di programmazione: i vettori e gli arrays.
Molti diranno: ma che differenza c'è tra un vettore ed un array?
Due differenze notevolissime:
Il vettore è una struttura DINAMICA mentre l'array è una struttura STATICA .
Un vettore può contenere solo riferimenti a tipi Object (oggetti), mentre un array solo elementi di un tipo specifico
Una struttura è detta dinamica se non ha una dimensione prefissata, mentre è detta statica se la sua dimensione
è definita con la sua dichiarazione (come accade per le costanti).
A cosa serve un vettore o un array?
I vettori e gli arrays sono strutture utilizzate per memorizzare lunghe liste di valori e di oggetti dello stesso tipo.
I vettori
Il vettore è,come abbiamo detto, una struttura dinamica per cui alla sua dichiarazione non dovremo dire quanti
elementi ci metteremo dentro!
import java.util.ArrayList;
ArrayList monete = new ArrayList();
Ho importato la classe necessaria.
Ho dichiarato un vettore di oggetti chiamato "monete".
Bene, bene adesso che sappiamo come dichiarare un vettore cosa ne facciamo?
Ecco i metodi fondamentali da conoscere per lavorare con i vettori:
add
monete.add(new Moneta());
Ho aggiunto al vettore monete un oggetto di tipo "Moneta" (ovviamente l'oggetto che aggiungo deve esistere)
get
Moneta nuovaMoneta = (Moneta)monete.get(1);
Il metodo get(int posizione) restituisce l'elemento che occupa la posizione "posizione" nel vettore
(posizione in questo caso è 1)
Tuttavia poichè l'elemento sarà un riferimento a Object dovremo, con il cast, trasformarlo in un riferimento all'oggetto originale,
in questo caso Moneta.
size()
int a = monete.size();
Ottengo il numero di elementi contenuti nel vettore "monete".
Gli arrays
Un array è, invece, statico quindi dovremo dire quanto lo vogliamo grande.
int[] interi = new int[10];
Ho dichiarato un array di interi in cui potrò mettere fino a 10 elementi.
Come faccio a mettere un numero nell'array?
interi[3] = 10;
Ho messo nella posione 3 dell'array il valore 10.
Come faccio a leggere un elemento da un array?
int a = interi[3];
Assegno ad "a" il valore contenuto nell'array in posizione 3.
Come faccio a saper quanti elementi ha un array?
int arrayLen = interi.length;
Questa non è la chiamata ad un metodo (non ci sono le parentesi) ma la lettura di una variabile di istanza publica
dell'oggetto "interi" che contiene, appunto, la lunghezza dell'array stesso.
Posso copiare un array in un'altro array?
Si, usando il metodo:
System.arraycopy(arrayIniziale, posizioneArrayIniziale, arrayDestinazione, posizioneArrayDestinazione, numeroElementiDaCopiare);
Ora spiego il significato dei parametri tra parentesi:
arrayIniziale: l'array da cui voglio copiare gli elementi
posizioneArrayIniziale: il numero dell'elemento da cui voglio iniziare a copiare
arrayDestinazione: l'array dove metterò gli elementi copiati
posizioneArrayDestinazione: la posizione da cui partire a depositare gli elementi copiati
numeroElementiDaCopiare: quanti elementi ho intenzione di copiare
Posso costruire array a più dimensioni?
Ovviamente si, se no le matrici come le gestiamo?
int[][] matrix = new int[10][20];
Ecco qua una bella matrice "10 X 20" 10 righe X 20 colonne.
Ricordate che all'interno di vettore o di un array si parte a contare gli elementi da 0 e non da 1 !!!
Quindi il primo elemento avrà come indice [0] e non [1]; allora l'ultimo elemento sarà:<
array.lenght - 1 per un array
lista.size() -1 per un vettore
Queste nozioni sono la base per lavorare con i vettori e gli array: la vera sfida è escogitare algoritmi molto veloci
per l'ordinamento e per la ricerca all'interno di un vettore o di un array. A voi il compito di farlo ;)