Добавьте ArrayList в очередь (LinkedList)

Насколько я знаю, мы можем создать Queue, используя синтаксис, аналогичный Queue<Integer> = new LinkedList<>().

Но когда я пытаюсь добавить элемент ArrayList<Integer> в Queue<Integer> с помощью метода .add(), это не работает.

Я рассматривал два решения, чтобы решить эту проблему:

  1. Используйте Queue<ArrayList<Integer>> вместо Queue<Integer>
  2. Используйте Queue<Integer> и добавьте ArrayList от Queue.addAll()

Что из этого мне следует использовать?

Java строго типизирована, поэтому Integer и ArrayList<Integer> — это не одно и то же. Просто решите, каким вы действительно хотите, чтобы этот тип был. Оба решения хороши, но дают разные результаты. Вам решать. Обратите внимание, что во втором решении вы не добавляете ArrayList, вы добавляете значения из ArrayList.

trincot 09.07.2024 06:45

Вы добавляете экземпляр ArrayList или его элементы? Можешь показать, как у тебя дела .add()

Sither Tsering 09.07.2024 06:46

«Я хочу приготовить ужин, и я читаю, что некоторым людям нравится клубника, а у некоторых в рецепте есть говядина. Какой ответ лучший?» не сообщая нам, готовите ли вы десерт или тушеное мясо. Оба хороши, но имеют совершенно разное применение. Только вы знаете, что вы хотите иметь в качестве элементов в своей очереди: списки целых чисел или отдельные целые числа.

Amadan 09.07.2024 06:47
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
3
74
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

QueueInteger и Queue.addAll() являются более распространенными и, вероятно, лучшим подходом, поскольку они четко определяют назначение очереди и фокусируются на обработке целых чисел.

Даже если вы храните, например. список лотерейных комбинаций?... Совершенно очевидно, что списки целых чисел встречаются чаще, чем списки списков целых чисел (поскольку каждый непустой список списков целых чисел имеет списки целых чисел); но невозможно ответить, лучше они или нет, не принимая во внимание цель, которая явно отсутствует в вопросе ОП.

Amadan 09.07.2024 06:55
Ответ принят как подходящий

Две ваши реализации делают очень разные вещи.

Вариант 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]

Какой из них «лучше», зависит от вашего варианта использования — дать вам конкретные рекомендации, учитывая ограниченную информацию, которую вы предоставили, выходит за рамки этого сайта.

Другие вопросы по теме