Иллюстрированный самоучитель по 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.



Содержание раздела