Насколько я знаю, мы можем создать Queue
, используя синтаксис, аналогичный Queue<Integer> = new LinkedList<>()
.
Но когда я пытаюсь добавить элемент ArrayList<Integer>
в Queue<Integer>
с помощью метода .add()
, это не работает.
Я рассматривал два решения, чтобы решить эту проблему:
Queue<ArrayList<Integer>>
вместо Queue<Integer>
Queue<Integer>
и добавьте ArrayList от Queue.addAll()
Что из этого мне следует использовать?
Вы добавляете экземпляр ArrayList или его элементы? Можешь показать, как у тебя дела .add()
«Я хочу приготовить ужин, и я читаю, что некоторым людям нравится клубника, а у некоторых в рецепте есть говядина. Какой ответ лучший?» не сообщая нам, готовите ли вы десерт или тушеное мясо. Оба хороши, но имеют совершенно разное применение. Только вы знаете, что вы хотите иметь в качестве элементов в своей очереди: списки целых чисел или отдельные целые числа.
QueueInteger и Queue.addAll() являются более распространенными и, вероятно, лучшим подходом, поскольку они четко определяют назначение очереди и фокусируются на обработке целых чисел.
Даже если вы храните, например. список лотерейных комбинаций?... Совершенно очевидно, что списки целых чисел встречаются чаще, чем списки списков целых чисел (поскольку каждый непустой список списков целых чисел имеет списки целых чисел); но невозможно ответить, лучше они или нет, не принимая во внимание цель, которая явно отсутствует в вопросе ОП.
Две ваши реализации делают очень разные вещи.
Вариант 1 предназначен для случаев, когда вы хотите создать очередь из списков массивов. В этом случае каждый элемент в очереди будет полным списком, а добавление нового элемента с помощью .add
добавит в очередь целый список. Queue<ArrayList<Integer>>
даст вам такую 2D-структуру:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Вариант 2 предназначен для случаев, когда вы хотите создать очередь целых чисел. В этом случае каждый элемент в очереди будет иметь отдельный номер, а «добавление» списка с помощью .addAll
будет последовательно добавлять каждый элемент в списке в очередь. Этот метод даст вам такую 1D-структуру:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Какой из них «лучше», зависит от вашего варианта использования — дать вам конкретные рекомендации, учитывая ограниченную информацию, которую вы предоставили, выходит за рамки этого сайта.
Java строго типизирована, поэтому
Integer
иArrayList<Integer>
— это не одно и то же. Просто решите, каким вы действительно хотите, чтобы этот тип был. Оба решения хороши, но дают разные результаты. Вам решать. Обратите внимание, что во втором решении вы не добавляете ArrayList, вы добавляете значения из ArrayList.