2d arraylist и наследование классов в Java - PullRequest
0 голосов
/ 27 февраля 2012

предположим, что у меня есть класс A в качестве родителя класса B и класса C

Я инициализировал два ArrayList<B> bList и ArrayList<C> cList.Затем у меня есть другой ArrayList<ArrayList<A>> bigList.

Я хочу сохранить bList и cList в этот bigList с помощью bigList.add (bList) и bigList.add (cList), и это дает мне ошибку.У кого-нибудь есть предложения, как мне исправить это или другой способ сделать это?

Спасибо

Ответы [ 3 ]

3 голосов
/ 27 февраля 2012

bigList должно быть ArrayList<ArrayList<? extends A>>, чтобы это работало.

0 голосов
/ 27 февраля 2012

Если исходить из того, что вы только что написали, ваша проблема может заключаться в том, что вы пытаетесь сделать следующее:

bigList.add(aList);

Когда вы собираетесь это сделать:

bigList.add(bList);
0 голосов
/ 27 февраля 2012

Чтобы создать список списков в этой ситуации, вам нужно использовать <? extends A>, чтобы разрешить подклассы A, а не только самого A.

    List<B> blist = new ArrayList<B>();
    List<C> clist = new ArrayList<C>();

    List<List<? extends A>> listofalist = new ArrayList<List<? extends A>>();

    listofalist.add(blist);
    listofalist.add(clist);

Если вместо этого вы хотите скопировать содержимое списков B и C в список A, вам нужно использовать ArrayList.addAll(), а не add().

add(Object o) для добавления отдельных объектов в список.

addAll(Collection c) - для добавления всего содержимого одного списка в другой список (или другую коллекцию).

См. javadoc для ArrayList.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...