Как создать подмассив в Java

Пример Java создания подмассива из массива, т.е. создание среза массива. Изучите использование метода Java 8 Arrays.copyOfRange(), а также преобразование подмассива в объект List.

 String[] names = {"Алекс", "Брайан", "Чарльз", "Дэвид"};//Подмассив от индекса «0»(включительно) до индекса «2»(исключая)String[] partialNames = Arrays.copyOfRange(names, 0, 2); // [Алекс, Брайан]// Использование общего языкаString[] partialNames = ArrayUtils.subarray(names, 0, 2); // [Алекс, Брайан]//Подмассив в списокСписок namesList = Arrays.asList( Arrays.copyOfRange(names, 2, names.length) ); // [Чарльз, Дэвид]

1. Создание подмассива с помощью Arrays.copyOfRange()

Метод copyOfRange() используется для копирования указанного диапазона указанного массива в новый массив. Он принимает 3 параметра – исходный массив, начальный индекс и конечный индекс для копирования.

Параметр индекса 'to' может быть больше длины индекса. В этом случае не будет вызвано исключение ArrayIndexOutOfBoundsException.

/*** @param <T> the class of the objects in the array* @param original the array from which a range is to be copied* @param from the initial index of the range to be copied, inclusive* @param to the final index of the range to be copied, exclusive.*/public static <T> T[] copyOfRange(T[] original, int from, int to) {return copyOfRange(original, from, to,(Class<? extends T[]>) original.getClass());}

В следующем примере мы создаем подмассивы из массива разной длины. Обратите внимание, что если длина нового массива больше исходного массива, то дополнительные места массива заполняются значением по умолчанию для типа данных. В данном примере значение по умолчанию для типа String равно null, поэтому дополнительные места массива заполняются значением null.

String[] names = {"Alex", "Brian", "Charles", "David"};//Copy till second name from with index '0'String[] partialNames = Arrays.copyOfRange(names, 0, 2); // [Alex, Brian]//Copy all names from with index '2'String[] endNames = Arrays.copyOfRange(names, 2, names.length); // [Charles, David]//Copy last 8 names start with index '2'//No ArrayIndexOutOfBoundsException errorString[] moreNames = Arrays.copyOfRange(names, 2, 10); // [Charles, David, null, null, null, null, null, null]

2. Использование ArrayUtils.subarray() из Common Lang

Метод ArrayUtils.subarray() возвращает массив, содержащий элементы заданного массива от начального индекса(включительно) до конечного индекса(исключительно).

Этот метод гораздо более гибок в обработке случаев, которые в противном случае привели бы к ошибкам. Например:

  • Метод возвращает значение null, если заданный массив равен null.
  • Значение начального индекса будет изменено на ноль, если начальный индекс меньше нуля.
  • Метод возвращает пустой массив в следующих сценариях:
    • Начальный индекс больше длины массива.
    • Конечный индекс меньше начального индекса.
  • Значение конечного индекса будет изменено на длину массива, если конечный индекс больше длины массива.

Добавьте последнюю версию Apache Common Lang из репозитория Maven.

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version></dependency>

Ниже приведен пример использования метода ArrayUtils.subarray().

String[] names = {"Alex", "Brian", "Charles", "David"};String[] partialNames = ArrayUtils.subarray(names, 0, 2); // [Alex, Brian]

3. Преобразование подмассива в список

Следующий пример Java демонстрирует создание ArrayList из подмассива. Это делается в два шага:

  • Создайте подмассив из массива с требуемыми элементами.
  • Преобразовать массив в список.
String[] names = {"Alex", "Brian", "Charles", "David"};//Array to sublistList<String> namesList = Arrays.asList( Arrays.copyOfRange(names, 0, 2) ); // [Alex, Brian]

Пишите мне свои вопросы в комментариях.

Исходный код Скачать

Прокрутить вверх