Ridimensionare un array
Non è possibile ridimensionare un array, però si può costruire un metodo che usa un array come valore di ritorno. Questo metodo restituisce un array contenente i dati dell’array e con oldArray lunghezza newLength.
public static int[] resize(int[] oldArray, int newLength) {
int[] newArray = new int[newLength];
int n = newLength;
for (int i = 0; i < n; i++)
newArray[i] = oldArray[i];
return newArray;
}
Copiare un array
Invece di usare un ciclo, è possibile invocare il metodo statico arraycopy della classe System (nel pacchetto java.lang):
System.arraycopy(from, fromStart, to, toStart, counter);
Il metodo System.arraycopy consente di copiare una porzione di un array in un altro.
double[] values = new double[10];
...
double[] otherValues = new double[values.length];
System.arraycopy(values, 0, otherValues, 0, values.length);
È anche possibile usare il metodo clone (Attenzione: il metodo clone restituisce un riferimento di tipo Object):
double[] otherValues = (double[]) values.clone();
Eliminare un elemento di un array
-
Se l’ordine tra gli elementi dell’array non è importante è sufficiente:
- Copiare l’ultimo elemento dell’array nella posizione dell’elemento da eliminare
- Ridimensionare l’array (oppure usare la tecnica degli array riempiti soltanto in parte)
-
Se l’ordine tra gli elementi dell’array deve essere mantenuto bisogna:
- Spostare tutti gli elementi dell’array successivi all'elemento da rimuovere nella posizione con indice immediatamente inferiore
- Ridimensionare l’array (oppure usare la tecnica degli array riempiti soltanto in parte)
Inserire un elemento in un array
- Per inserire l'elemento nella posizione voluta bisogna “fargli spazio”. È necessario:
- Ingrandire l’array
- Spostare tutti gli elementi dell’array successivi alla posizione di inserimento nella posizione con indice immediatamente superiore (a partire dall'ultimo)