вторник, 14 июня 2016 г.

Стек в Java SE

Проще всего представить стек это представить себе стопку тетрадей. Обычно учитель работает с ней так: смотрит на верхнюю тетрадь, проверяет ее, если добавляет элемент – тетрадь - в стопку, то наверх, а не в середину.
Таким образом, первая сданная тетрадь (самого шустрого ученика) будет проверена последней, а последняя сданная – первой.
Рассмотрим базовый класс Stack и методы работы с ним.

Чтобы создать стек целых чисел воспользуемся методом:
Stack<Integer> stack = new Stack<>();

Добавить элемент в стек с помощью метода stack.push();:
stack.push(123); // добавит в стек число 123
stack.push(452); // добавит в стек число 452(будет верхним элементов стека)

Проверить есть ли что то в стеке можно методом:
stack.isEmpty(); // если в стеке ничего нет то вернет true, если стек заполнен вернет false

Чтобы посмотреть последний элемент стека, т.е. доступный элемент есть метод stack.peek();
она возвращает элемент, но не удаляет его из стека. Следующий код:
stack.push(123); 
stack.push(452); 
System.out.println(stack.peek()); // вернет число 452

Следующай команда stack.pop(); возвращает последний элемент стека и удалят его. Рассмотрим следующий код:
stack.push(123); 
stack.push(452); 
System.out.println(stack.pop()); // вернет число 452 и удалит его
System.out.println(stack); // вывести стек
Если мы выведем весь стек после метода stack.pop(), то увидим что в стеке осталось только число 123.

Выше мы рассмотрели основные методы работы со стеком. Ниже я приведу код работающей программы.

import java.util.Stack;

public class OneStack {
     public static void main(String[] args){
         Stack<Integer> stack = new Stack<>();  // создаем стек целых чисел
         
         stack.push(10); // добавить элемент в стек
         stack.push(120);
         stack.push(130);
         stack.push(140);
         
         System.out.println(stack);  //выведем в консоль весь стек
         
         System.out.println(stack.isEmpty()); // пустой ли стек? если 
                                                   // да - true нет - false
         
         System.out.println(stack.peek()); //выведем последний элемент стека
         
         System.out.println(stack.pop()); //выведем последний элемент 
                                                       // стека и удалим его
         
         System.out.println(stack);  //выведем в консоль весь стек и 
                                    // убедимся что элемент 140 отстутсвует
     } 
}

Результат выполнения программы:
[10, 120, 130, 140]
false
140
140
[10, 120, 130]

Комментариев нет:

Отправить комментарий