How to Get Part of an Array or List in Java

Published Sep 16, 2022

Let’s see how we can obtain a part of an array or list (i.e. subarray or sublist).

1. Obtain subarray

1.1. Using Arrays::copyOfRange

We can use Arrays::copyOfRange to copy the contents within a specified range of an array into another array.

int[] src = {0, 1, 2, 3};
int[] dest = Arrays.copyOfRange(src, 0, 1); // {0}
int[] dest = Arrays.copyOfRange(src, 2, 4); // {2, 3}
int[] dest = Arrays.copyOfRange(src, 1, 6); // {1, 2, 3, 0, 0}

The start index is inclusive.

The stop index is exclusive and can be greater than the length of the array. All elements whose index is greater than the length of the array will be null or 0.

1.2. Using System::arrayCopy

We can also use System::arrayCopy to achieve this copy operation.

This method takes quite a few arguments.

System.arraycopy(srcArr, srcPos, destArr, destPos, lengthToCopy);

The following copies a subarray of length 2 that starts at the second index of the src array.

int[] src = {0, 1, 2, 3};
int[] dest = new int[2];
System.arraycopy(src, 2, dest, 0, 2); // {2, 3}

If the stop index is out of bounds, it will throw an IndexOutOfBoundsException error.

2. Obtain sublist

We can perform a similar operation on lists using List::subList.

List<Integer> src = Arrays.asList(0, 1, 2, 3);
List<Integer> dest = src.subList(0, 1); // {0}
List<Integer> dest = src.subList(2, 4); // {2, 3}

The start index is inclusive while the stop index is exclusive.

If the stop index is out of bounds, it will throw an IndexOutOfBoundsException error.