Иллюстрированный самоучитель по Java

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

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.