Класс Stack
Класс stack из пакета java.utii. объединяет элементы в стек.
Стек (stack) реализует порядок работы с элементами подобно магазину винтовки– первым выстрелит патрон, положенный в магазин последним,– или подобно железнодорожному тупику – первым из тупика выйдет вагон, загнанный туда последним. Такой порядок обработки называется LIFO (Last In – First Out).
Перед работой создается пустой стек конструктором stack ().
Затем на стек кладутся и снимаются элементы, причем доступен только "верхний" элемент, тот, что положен на стек последним.
Дополнительно к методам класса vector класс stack содержит пять методов, позволяющих работать с коллекцией как со стеком:
- push (Object item) – помещает элемент item в стек;
- pop () – извлекает верхний элемент из стека;
- peek () – читает верхний элемент, не извлекая его из стека;
- empty () – проверяет, не пуст ли стек;
- search (object item) – находит позицию элемента item в стеке. Верхний элемент имеет позицию 1, под ним элемент 2 и т. д. Если элемент не найден, возвращается -1.
Листинг 6.2 показывает, как можно использовать стек для проверки парности символов.
Листинг 6.2. Проверка парности скобок.
import java.utii.*; class StackTesti static boolean checkParity(String expression, String open, String close){ Stack stack = new Stack (); StringTokenizer st = new StringTokenizer(expression, " \t\n\r+*/-(){}", true); while (st..hasMoreTokens ()) { String tmp = st.nextToken(); if (tmp.equals(open)), stack.push(open); i f (tmp.equals(close)) stack.pop(); } if (stack.isEmpty ()) return true/return fals e; } public static void main(String[] args){ System.out.println( checkParityC'a – (b – (c – a) / (b + c) – 2), "(", "))); } }
Как видите, коллекции значительно облегчают обработку наборов данных.
Еще один пример коллекции совсем другого рода – таблицы – предоставляет класс Hashtable.