Java. Как разбить массив на четыре отдельных массива?

Вопрос: У меня есть массив, который содержит строку чисел, таких как: 1011 и я хотел разбить его на четыре отдельных массива, содержащих каждое из этих значений. Как мне это сделать? String [] array = {1,0,1,1}; //would I do something like this: array.substring(0,4) Ответ №1 Вы должны использовать Arrays.copyOfRange(...) для этого. Ответ №2 Вариант 1 -

Вопрос:

У меня есть массив, который содержит строку чисел, таких как: 1011

и я хотел разбить его на четыре отдельных массива, содержащих каждое из этих значений. Как мне это сделать?

String [] array = {1,0,1,1}; //would I do something like this: array.substring(0,4) Ответ №1

Вы должны использовать Arrays.copyOfRange(…) для этого.

Ответ №2

Вариант 1 – просто создать новый массив для каждого элемента в массиве, который у вас есть… можно было бы сделать так:

public <T> List<T[]> splitEachItemIntoOwnArray(T[] original) { List<T[]> result = new ArrayList<T[]>(); if (original == null) return result; for (T t : original) { result.add((T[])new Object[] {t}); } return result; }

Вариант 2, вы также можете добиться этого в целом с помощью метода Arrays.copyOfRange():

public <T> List<T[]> splitEachItemIntoOwnArray2(T[] original) { List<T[]> result = new ArrayList<T[]>(); if (original == null) return result; for (int i = 0; i < original.length; i++) { result.add(Arrays.copyOfRange(original,i,i+1)); } return result; }

Варианты 1 и 2 работают, если вы всегда хотите, чтобы каждый элемент исходного массива разбился на собственный массив. Если вы захотите, чтобы все N элементов исходного массива разбивались на свои, это должно работать:

public <T> List<T[]> splitEachItemIntoOwnArray2(T[] original, int size) { List<T[]> result = new ArrayList<T[]>(); if (original == null) return result; int curPos = 0; while (curPos < original.length) { int remaining = original.length — curPos+1; if (remaining <= size) { result.add(Arrays.copyOfRange(original,curPos,original.length)); } else { result.add(Arrays.copyOfRange(original,curPos,curPos+size)); } curPos += size; } return result; } Ответ №3

Там нет расщепления afaik, но вы можете скопировать его в новые массивы, используя диапазон

проверить copyOfRange

static <T,U> T[] copyOfRange(U[] original, int from, int to, Class<? extends T[]> newType)

использование:

String [] array = {1,0,1,1}; // Copies from element 0 to 0 String[] array1 = Arrays.copyOfRange(array, 0, 0); Ответ №4public static void main(String[] args) { int[] array = {1,0,1,1}; int[] array1 = Arrays.copyOfRange(array, 0, 1); int[] array2 = Arrays.copyOfRange(array, 1, 2); int[] array3 = Arrays.copyOfRange(array, 2, 3); int[] array4 = Arrays.copyOfRange(array, 3, 4); System.out.println(array1[0]); System.out.println(array2[0]); System.out.println(array3[0]); System.out.println(array4[0]); }

Оцените статью
Добавить комментарий