Вопрос:
У меня есть массив, который содержит строку чисел, таких как: 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]); }