Ответ 1
Stack
, представляет собой стек Last-In-First-Out объектов, полученных из Vector
, а также класс. Vector
идет со "старым" набором коллекций, изначально поставляемым Java, и в конечном итоге получается из AbstractCollection
. Следует отметить, что действительно существует одна каноническая реализация Stack
; Queue
и List
имеют много хорошо известных реализаций, которые могут сделать существенную разницу в производительности при правильном выборе.
Queue
, с другой стороны, следует интерфейсу Collection
из "нового" набора коллекций, который обычно используется сегодня, поэтому он следует интерфейсам и поставляется с различными реализациями.
Stack
следует использовать, когда вам нужна семантика LIFO, тогда как Queue
следует использовать, когда вам нужна семантика First-In-First-Out.
ArrayList
и LinkedList
хранят упорядоченные коллекции вещей и не выстраиваются непосредственно в случаях использования Stack
или Queue
. Stack
и Queue
являются в некотором смысле буферами данных, тогда как семантика a List
обычно делает ее такой, что она является хранилищем данных; ничто не мешает вам использовать List
для реализации Stack
или Queue
.