Я нашел несколько вопросов, похожих на проблему, с которой я столкнулся, но я не смог найти решение.Пример: Несовместимые типы Список списков и ArrayList из ArrayList , Не в состоянии понять, как определить список списков в Java
Программа должна вернуть список списков,Итак, я объявил список списков, а затем пытался добавить к нему массивы.
allsubsets = new ArrayList<List<Integer>>();
Но, когда я пытаюсь получить доступ к каждому элементу массива из списка списков, как показано ниже, я получаю сообщение об ошибке: incompatible types: List<Integer> cannot be converted to ArrayList<Integer>
for(ArrayList<Integer> subset:allsubsets)
Когда я пытаюсь преобразоватьстрока в for(List<Integer> subset:allsubsets)
, выдает ошибку, что add, addAll не существует для типа List, что имеет смысл.Пожалуйста, помогите мне понять, как получить доступ к элементам списка списков в этом случае.
public List<List<Integer>> subsets(int[] nums) {
List<Integer> arrayList = new ArrayList<Integer>();
for(int i:nums) {
arrayList.add(i);
}
return subsets(arrayList,nums.length);
}
public List<List<Integer>> subsets(List<Integer> arrayList, int index) {
List<List<Integer>> allsubsets;
if(index == -1) {
allsubsets = new ArrayList<List<Integer>>();
allsubsets.add(new ArrayList<Integer>());
}
else {
allsubsets = subsets(arrayList, index-1);
int item = arrayList.get(index);
List<List<Integer>> moresubsets = new ArrayList<List<Integer>>();
for(ArrayList<Integer> subset:allsubsets) {
//The line above throws error as I created list of lists
List<Integer> newsubset = new ArrayList<Integer>(); //create new subset
newsubset.addAll(subset); // add all old items
newsubset.add(item); // add new item
moresubsets.add(newsubset); //add subset to moresubsets
}
allsubsets.add(moresubsets); // add to actual one
}
return allsubsets;
}
Примечание: если я изменяю тип возвращаемого значения на arraylist of arraylist, он работает для меня.Но я хочу, чтобы он работал для списка списков