Пример 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]
Пишите мне свои вопросы в комментариях.