Как память выделяется для стека и очереди в Java - PullRequest
1 голос
/ 07 ноября 2019

Мы знаем, что ArrayList использует динамический массив для хранения данных. LinkedList использует связанный список для хранения данных. Итак, для обоих этих случаев мы знаем, как это работает, когда добавляется или удаляется новый элемент (в отношении памяти). Теперь аналогично, как память выделяется для стека или очереди в Java. Что происходит на уровне памяти, когда я добавляю / удаляю элемент в / из стека или очереди.

Ответы [ 2 ]

0 голосов
/ 07 ноября 2019

Ну, Queue - это интерфейс, так что об этом особо нечего сказать. Там много реализаций и разного поведения. В любом случае, например, ArrayBlockingQueue имеет распределение памяти, подобное ArrayList. В любом случае, есть две основные группы (ограниченные и неограниченные), но это действительно будет зависеть от выбранной вами реализации.

О Stack, распределение памяти также очень похоже на ArrayList, так как это подклассVector и это поддерживается массивом.

0 голосов
/ 07 ноября 2019

java.util.Stack - это подкласс java.util.Vector, который является ничем иным, как массивом. Теперь java.util.Queue является интерфейсом и имеет различные реализации, которые подразделяются на две основные категории:

  1. ограниченный - поддерживается базовым массивом фиксированного размера. Типичным примером является ArrayBlockingQueue
  2. неограниченный - подкрепленный связанным списком и, следовательно, теоретически бесконечный. Типичным примером является LinkedBlockingQueue

Пожалуйста, проверьте документы для Стек и Очередь

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