ArrayLists в Arraylists в Arraylists в Java - PullRequest
0 голосов
/ 20 марта 2019

Каков наилучший способ реализации ArrayList, который может хранить любой уровень ArrayList внутри Arraylists и Integer.

List<List<Integer>> list = ArrayList<List>();

допускает только до 2 уровней списков в списках и не допускает смешивания Intergers и ArrayLists.

Это несколько простых вещей в Python. И это глупая структура данных, но, к сожалению, тесты кодирования требуют такого рода вещей.

Ответы [ 2 ]

1 голос
/ 20 марта 2019

Каков наилучший способ реализации ArrayList, который может хранить ArrayList любого уровня внутри Arraylists and Integer

Единственный вариант, который у вас есть List<Object> как Generics are compile-time properties.Поэтому вы не можете динамически изменять / выбирать тип в зависимости от данных времени выполнения .

Итак, лучший и единственный вариант, который я считаю List<Object>.Тем не менее, you may need to cast many times, чтобы использовать этот список.

0 голосов
/ 20 марта 2019

Единственный способ сделать это более безопасным для типов способом, чем List<Object>, - это определить тип объединения:

class IntegerOrList {
  final Integer i;
  final List<IntegerOrList> list;

  // Constructors to ensure that only one of i and list is present.
  IntegerOrList (Integer i) {
    this.i = i; this.list = null;
  }

  IntegerOrList (List<IntegerOrList> list) {
    this.i = null; this.list = list;
  }

  // Getters.
}

Это должно выдать или обработать иначе, если вы попытаетесь получить доступ к отсутствующему.

Затем создайте список из них:

List<IntegerOrList> list = new ArrayList<>();
...