2011-11-19 11 views
10

Dire che ho un array di interi,Creazione di un nuovo array con contenuto dalla vecchia serie, mantenendo la vecchia matrice statica

int[] array = new int[7]; 
for(int i = 0; i < 7; i++) 
{ 
array[i] = i; 
} 

Ora voglio ottenere solo i primi quattro numeri in quel array, e svoltare a mettere che in un altro array.

quindi voglio veramente qualcosa di simile ...

newArray = array[0-3]. 

So che la sintassi è sbagliato, ma sto solo dando l'idea generale di quello che sto cercando di fare, è qualcosa di simile possibile ? O devo creare un ciclo e aggiungerlo manualmente allo newArray?

risposta

24

Metodo 1

int[] newArr = new int[4]; 
System.arraycopy(array, 0, newArr, 0, 4); 

Il metodo richiede cinque argomenti

  1. src: La matrice di origine.
  2. srcPosition: la posizione nella sorgente da cui si desidera iniziare la copia .
  3. des: l'array di destinazione.
  4. desPosition: La posizione nell'array di destinazione in cui deve essere avviata la copia .
  5. length: il numero di elementi da copiare.

Questo metodo genera una eccezione NullPointerException se uno di src o des è null. Si getta anche un'ArrayStoreException nei seguenti casi:

  • Se lo src non è un array.
  • Se des non è un array.
  • Se src e des sono matrici di tipi di dati diversi.

Metodo 2

utilizzare

Arrays.copyOf(array,4) per copiare i primi 4 elementi, troncando il resto.

di

Arrays.copyOfRange(array,1,5) per copiare elementi 1-4 se avete bisogno al centro di un array.

+0

Grazie per la risposta, ma per l'ultimo metodo 2, Arrays.copyOfRange (array, 1,5) copierà gli elementi 1-4. Non so perché l'abbiano fatto così ... ma grazie per la tua risposta, sono def. usando l'ultimo metodo –

+0

colpa mia, è a base zero e non stavo pensando ... – jkschneider

2

È possibile creare il nuovo array nelle dimensioni desiderate (4 in questo caso), quindi utilizzare System.arrayCopy per copiare il contenuto da un array all'altro.

9
int[] newArray = Arrays.copyOf(array,4); 
2

Si potrebbe utilizzare copyOfRange per questo scopo, che copia la gamma dell'array specificato in una nuova matrice specificata.

copyOfRange(byte[] original, 
       int from, 
       int to) 

Parametri:

originale - la matrice da cui un intervallo da copiare

da - l'indice iniziale della gamma da copiare, compreso

to - l'indice finale dell'intervallo da copiare, esclusivo. (Questo indice può trovarsi all'esterno dell'array.)

Problemi correlati