(1) java.util.Stack - унаследованный класс от Java 1.0. Это предшествует структуре Коллекций на многие годы, и это, откровенно говоря, пример ужасного дизайна на многих фронтах. Ничего в этом не должно быть. Основная проблема заключается в том, что Stack
расширяет Vector
, и поскольку все наследование в Java является публичным наследованием, все методы Vector
также доступны в Stack
. Следовательно, вы можете проверять любую позицию в стеке, добавлять и удалять элементы из середины, очищать ее или выполнять любые другие действия, которые не должны быть частью абстракции стека, без приведения . Сравните это с использованием интерфейсов Queue
или Deque
, через которые доступны только подходящие для стека методы.
(2) На самом деле не существует такой вещи, как обычная обычная очередь, но LinkedList реализует очередь без какой-либо специальной семантики, так что, возможно, это то, что вам нужно.