У меня есть метод, пытающийся перенести ArrayList, содержащий ArrayList строки, называемый матрицей и возвращающий новый массив.Transpose ArrayList <ArrayList <String>> в Java
Я нашел Transposing Values in Java 2D ArrayList, но похоже, что это для массивов, а не для ArrayLists. Мой 2D-массив имеет неизвестные размеры, прямоугольные или, возможно, нерегулярные (но никогда не квадратные).
Моя идея состояла в том, чтобы прочитать каждый внутренний массив и добавить элементы во внутренние массивы исходящей матрицы.
public static ArrayList<ArrayList<String>> transpose (ArrayList<ArrayList<String>> matrixIn){
ArrayList<ArrayList<String>> matrixOut = new ArrayList<>();
//for each row in matrix
for (int r = 0; r < matrixIn.size(); r++){
ArrayList<String> innerIn = matrixIn.get(r);
//for each item in that row
for (int c = 0; c < innerIn.size(); c++){
//add it to the outgoing matrix
//get matrixOut current value
ArrayList<String> matrixOutRow = matrixOut.get(c);
//add new one
matrixOutRow.add(innerIn.get(c));
//reset to matrixOut
matrixOut.set(c,matrixOutRow);
}
}
return matrixOut;
}
Я получаю "IndexOutOfBoundsException: Индекс: 0 Размер: 0" Ошибка при
//get matrixOut[v]
ArrayList<String> matrixOutRow = matrixOut.get(v);
Что я делаю не так с этой вещи?
'размер: 0' означает, что в списке нет элементов. –
Является ли это компиляция? ArrayList> matrixOut = new ArrayList <>(); и matrixOut - пустой список –
nayakam