You can copy array elements from one array to another in two ways:
The signature of the arraycopy() method is as follows:
public static void arraycopy(Object sourceArray, int sourceStartPosition, Object destinationArray, int destinationStartPosition, int lengthToBeCopied)
Parameter | Meaning |
---|---|
sourceArray | reference to the source array. |
sourceStartPosition | starting index in the source array from where the copying of elements will start. |
destinationArray | reference to the destination array. |
destinationStartPosition | start index in the destination array from where new elements from source array will be copied. |
lengthToBeCopied | number of elements to be copied from the source array to the destination array. |
The following code demonstrates how to copy an array using a for loop and the System.arraycopy() method.
import java.util.Arrays; public class Main { public static void main(String[] args) { // Have an array with 5 elements int[] data = { 1, 2, 3, 4, 5 }; // Expand the data array to 7 elements int[] eData = expandArray(data, 7); // Truncate the data array to 3 elements int[] tData = expandArray(data, 3); System.out.println("Using for-loop..."); System.out.println("Original Array: " + Arrays.toString(data)); System.out.println("Expanded Array: " + Arrays.toString(eData)); System.out.println("Truncated Array: " + Arrays.toString(tData)); // Copy data array to new arrays eData = new int[9]; tData = new int[2]; System.arraycopy(data, 0, eData, 0, 5); System.arraycopy(data, 0, tData, 0, 2); System.out.println("Using System.arraycopy() method..."); System.out.println("Original Array: " + Arrays.toString(data)); System.out.println("Expanded Array: " + Arrays.toString(eData)); System.out.println("Truncated Array: " + Arrays.toString(tData)); }/* ww w . j av a2s. co m*/ // Uses a for-loop to copy an array public static int[] expandArray(int[] oldArray, int newLength) { int originalLength = oldArray.length; int[] newArray = new int[newLength]; int elementsToCopy = 0; if (originalLength > newLength) { elementsToCopy = newLength; } else { elementsToCopy = originalLength; } for (int i = 0; i < elementsToCopy; i++) { newArray[i] = oldArray[i]; } return newArray; } }