#java #arraylist
#java #arraylist
Вопрос:
У меня есть 3d arraylist, и к каждому его измерению я хочу добавить временные 2d arraylists. Например
List<List<Integer>> perm = new ArrayList<List<Integer>>();
List<List<List<Integer>>> list1 = new ArrayList<List<List<Integer>>>();
list1.get(0).add(perm);
list1.get(1).add(perm);
но это не работает. Это говорит мне
The method add(List<Integer>) in the type List<List<Integer>> is not applicable for the
arguments (List<List<Integer>>)
Ответ №1:
Посмотрите на типы более внимательно — вы пытаетесь добавить a List<List<Integer>>
в первый список внутри list1
(потому что вы вызвали get(0)
.)
Однако этот первый список (внутри самого верхнего ArrayList
) имеет тип List<Integer>
, not List<List<Integer>>
— таким образом, типы не совпадают, и вы получаете ошибку компиляции.
Комментарии:
1. @user3758223 Это зависит от того, чего вы пытаетесь достичь — просто выполнение
list1.add(perm);
будет компилироваться, хотя я понятия не имею, нужно ли вам такое поведение.2. ну, я хочу добавить различные временные 2d-списки в размеры 3d-списка. Так, например, когда я вызываю System.out.print(list1.get(0)) Я получаю один 2d список, например [1,2,3], [5,2,1], и System.out.print(list1.get(1)) даст мне другой список, например [0,0,1], [2,2,2] и так далее.