Главная причина stack это низкая производительность, если чекнуть исходники то он наследует поведение другой устаревшей структуры - Vector. Где все методы синхронизированы. Если есть выбор то в общем случае целесообразно использовать ArrayDeque. Эта структура очень удобная так как может служить в роли стэка и очереди. И по производительности лучше.
Taras Anichyn
Главная причина stack это низкая производительность, если чекнуть исходники то он наследует поведение другой устаревшей структуры - Vector. Где все методы синхронизированы. Если есть выбор то в общем случае целесообразно использовать ArrayDeque. Эта структура очень удобная так как может служить в роли стэка и очереди. И по производительности лучше.
Интерфейс Deque является лучшим подходом для структур данных которые поддерживают принцип LIFO, поскольку он гарантирует работоспособность всех операций стэка. Stack, кстати, это не интерфейс в Java, а класс. LinkedList не содержит методы peek(), empty()и search(), так что это не полноценный стек. Но вы в принципе правы, с линкед листа в принципе можно слепить что-то подобное на стэк. А от если говорить о многопоточке, то намного проще использовать ArrayDeque ибо его очень просто декорировать, тогда это будет идентичный стэк, только с возможностью настройки стартовой ёмкости.
Stack, кстати, это не интерфейс в Java, а класс. LinkedList не содержит методы peek(), empty()и search(), так что это не полноценный стек. Но вы в принципе правы, с линкед листа в принципе можно слепить что-то подобное на стэк. А от если говорить о многопоточке, то намного проще использовать ArrayDeque ибо его очень просто декорировать, тогда это будет идентичный стэк, только с возможностью настройки стартовой ёмкости.