Вернуть список> - PullRequest
       12

Вернуть список>

0 голосов
/ 11 декабря 2018

Я должен заполнить следующий код

class Solution {
    public List<List<Integer>> threeSum(int[] nums) {
    }
}

Так что, если я объявлю и верну это List<List<Integer>> triples = new List<List<Integer>>();

, я получу эту ошибку: Список является абстрактным;невозможно создать экземпляр

И если я верну это List<List<Integer>> trips = new ArrayList<ArrayList<Integer>>();

Я получу это error: incompatible types: ArrayList<ArrayList<Integer>> cannot be converted to List<List<Integer>>

Что я делаю неправильно?

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Обобщения Java являются инвариантами:

List<List<Integer>> trips = new ArrayList<List<Integer>>();

Или, проще:

List<List<Integer>> trips = new ArrayList<>();
0 голосов
/ 11 декабря 2018

Вы можете создать новую коллекцию, которая содержит другую коллекцию, которая содержит целочисленное значение, используя

List<List<Integer>> trips = new ArrayList<>();

И если вы хотите получить внутренний список, вы можете использовать этот код

List<Integer> trip = trips.get(0);
0 голосов
/ 11 декабря 2018

Использование:

List<List<Integer>> trips = new ArrayList<List<Integer>>();

ArrayList - это класс, который реализует интерфейс List, поэтому вы можете назначить его переменной List.Тип элемента List - List<Integer> - должен оставаться неизменным, поскольку ArrayList<ArrayList<Integer>> не является подтипом List<List<Integer>> и поэтому не может быть назначен этой переменной.

Послевы создаете экземпляр внешнего List, вы можете добавить к нему ArrayList<Integer> экземпляров:

trips.add(new ArrayList<Integer>());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...