Я работаю над программой решения sudoku, и мне нужен arraylist, который содержит числа от 1 до 9 для каждого квадрата на плате 9x9. Каждый из этих arraylists соответствует возможным номерам, которые могут идти в этом квадрате, если число не может идти на этом квадрате, оно удаляется из списка.Java: 2D массив arraylists?
Я хочу, чтобы иметь возможность подтянуть ArrayList текущего квадрата она работает на, как, например, если бы я хотел, чтобы удалить номер 7 из ArrayList, соответствующий квадрат (3,5)
arrayOfLists[3][5].remove(Integer.valueOf(7));
Однако я не могу понять, как это сделать. Когда я пытаюсь создать массив я получаю эту ошибку в строке, где я декларировать свой массив ArrayLists
Невозможно создать общий массив ArrayList
Вот мой код:
//create arraylist
ArrayList<Integer> nums = new ArrayList<Integer>();
//fill arraylist with numbers 1-9
for (int i = 1; i < 10; i++) {
nums.add(i);
}
//create 9x9 array of arraylists
ArrayList<Integer>[][] array = new ArrayList<Integer>[9][9];
//fill each element of array with arraylist of numbers 1-9
for(int i = 0; i<9; i++){
for(int j = 0; j<9; j++){
array[i][j] = nums;
}
}
}
Я делаю это неправильно или не удается создать массив arraylists? Если это невозможно, как мне это сделать?
См. Ответы: http://stackoverflow.com/questions/11113095/how-can-i-initialize-my-generic-array, http://stackoverflow.com/questions/4549192/create-an-array -of-arrayliststring-elements – Kevin
замените 10 элементов 'ArrayList' на 'boolean [9]' и установите те, которые удалены на 'false' –
zapl
Я не видел этого ни в одном из ответов на этих ссылках, но Я просто попробовал 'private class IntegerArrayList расширяет ArrayList {...}' и объявляет конструкторы вроде ArrayList, которые использовали 'super (...)'; то я смог использовать 'new IntegerArrayList [9] [9]', а методы 'ArrayList' отлично работали над компонентами массива, например. 'А [I] [J] .add (п)'. Есть ли причина, по которой этот подход не сработает? –
ajb