Я пытаюсь решить следующую проблему: у меня есть 2D зубчатый массив
[[1, 2], [1], [3, 4], [2, 3, 4]]
, который я хотел бы преобразовать в обычный 2D-массив. В настоящее время мне удалось получить это
[[1, 2, 0, 0], [1, 0, 0, 0], [3, 4, 0, 0], [2, 3, 4, 0]]
но это не то, что я хочу. Цель состоит в том, чтобы иметь нормальные индексы массива, равные исходному зубчатому.
Другими словами, я хотел бы сопоставить значение из исходного зубчатого массива с индексом, начинающимся с 1 в новом правильном массиве. Вот мой желаемый вывод
[[1, 2, 0, 0], [1, 0, 0, 0], [0, 0, 3, 4], [0, 2, 3, 4]]
Вот мой код, который создает этот массив, что не совсем то, что я хотел бы иметь:
[[1, 2, 0, 0], [1, 0, 0, 0], [3, 4, 0, 0], [2, 3, 4, 0]]
import java.util.*;
public class MultiDarrays {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Get number of two parameters: cyclists and bicycles: ");
int c = sc.nextInt();
int b = sc.nextInt();
System.out.println("cyclists: " + c + " " + "bicycles: " + b);
ArrayList<ArrayList<Integer>> multilist = new ArrayList<ArrayList<Integer>>();
for (int i = 0; i < c; i++) {
List<Integer> integers = new ArrayList<Integer>();
int num = sc.nextInt();
for (int j = 0; j < num; j++) {
int elem = sc.nextInt();
integers.add(elem);
}
multilist.add((ArrayList<Integer>) integers);
}
for (int i = 0; i < multilist.size(); i++) {
System.out.println("Elements are: " + multilist.get(i));
}
sc.close();
int[][] array = new int[multilist.size()][b];
for (int i = 0; i < array.length; i++) {
array[i] = new int[multilist.get(i).size()];
}
for (int i = 0; i < multilist.size(); i++) {
for (int j = 0; j < multilist.get(i).size(); j++) {
array[i][j] = multilist.get(i).get(j);
}
}
System.out.println(Arrays.deepToString(array));
int[][] full_array = new int[c][b];
System.out.println(Arrays.deepToString(full_array));
// copy elements from jagged to normal 2D array
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
full_array[i][j] = array[i][j];
}
}
System.out.println(Arrays.deepToString(full_array));
}
}
Выход:
Get number of two parameters: cyclists and bicycles:
4 4
cyclists: 4 bicycles: 4
2 1 2
1 1
2 3 4
3 2 3 4
Elements are: [1, 2]
Elements are: [1]
Elements are: [3, 4]
Elements are: [2, 3, 4]
[[1, 2], [1], [3, 4], [2, 3, 4]]
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
[[1, 2, 0, 0], [1, 0, 0, 0], [3, 4, 0, 0], [2, 3, 4, 0]]