Класс Stack
java.util
public class Stack
extends Vector
implements Cloneable, Collection, List, Serializable
Stack — подкласс класса Vector, который реализует простой механизм типа "последний вошел - первый вышел" (LIFO). В дополнение к стандартным методам своего родительского класса, Stack предлагает наличие описанных ниже методов.
Конструкторы |
Stack() Создаёт пустой стек. |
Методы |
|
boolean |
empty()Служит для проверки стека на наличие элементов — он возвращает true, если стек пуст. |
Object |
peek()Возвращает верхний элемент, не удаляя его из стека. |
Object |
pop()Извлекает верхний элемент удаляя его из стека. |
Object |
push(Object item)Помещает элемент в вершину стека. |
int |
search(Object o)Метод ищет заданный элемент в стеке, возвращая количество операций pop, которые требуются для того чтобы перевести искомый элемент в вершину стека. Если заданный элемент в стеке отсутствует, этот метод возвращает -1. |
Пример использования:
Ниже приведен пример программы, которая создает стек, заносит в него несколько объектов типа Integer, а затем извлекает их.
import java.util.Stack; import java.util.EmptyStackException; class StackExample { static void showpush(Stack st, int a) { st.push(new Integer(a)); System.out.println("push(" + a + ")"); System.out.println("stack: " + st); } static void showpop(Stack st) { System.out.print("pop -> "); Integer a = (Integer) st.pop(); System.out.println(a); System.out.println("stack: " + st); } public static void main(String args[]) { Stack st = new Stack(); System.out.println("stack: " + st); showpush(st, 42); showpush(st, 66); showpush(st, 99); showpop(st); showpop(st); showpop(st); try { showpop(st); } catch (EmptyStackException e) { System.out.println("empty stack"); } } }
Ниже приведен результат, полученный при запуске этой программы. Обратите внимание на то, что обработчик исключений реагирует на попытку извлечь данные из пустого стека. Благодаря этому мы можем аккуратно обрабатывать ошибки такого рода.
stack: []
push(42)
stack: [42]
push(66)
stack: [42, 66]
push(99)
stack: [42, 66, 99]
pop -> 99
stack: [42, 66]
pop -> 66
stack: [42]
pop -> 42
stack: []
pop -> empty stack