Класс
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.
|