Дек с двух концов в Java
Интерфейс Deque расширяет очередь: можно
работать и с головы, и с хвоста. На деке удобно
строить стек, двустороннюю очередь или обход
истории с кнопками «назад» и «вперед».
Частая реализация снова ArrayDeque: она
быстрая, не требует отдельного класса для стека и
подходит как замена устаревшему Stack.
Стек команд через дек: последняя команда уходит первой:
import java.util.ArrayDeque;
import java.util.Deque;
public class Main {
public static void main(String[] args) {
Deque<String> stack = new ArrayDeque<>();
stack.push("open");
stack.push("edit");
stack.push("save");
System.out.println(stack.pop());
System.out.println(stack.pop());
}
}
Методы push и pop работают с началом
дека как со стеком. Для явной работы с обоими концами
есть offerFirst, offerLast,
pollFirst и pollLast:
import java.util.ArrayDeque;
import java.util.Deque;
public class Main {
public static void main(String[] args) {
Deque<Integer> lane = new ArrayDeque<>();
lane.offerLast(1);
lane.offerLast(2);
lane.offerFirst(0);
System.out.println(lane.pollFirst());
System.out.println(lane.pollLast());
}
}
Даны команды:
var commands = List.of("a", "b", "c");
Снимите их со стека в порядке LIFO и выведите через пробел.