- 30.4. Java – Класс Stack
- Методы
- Пример
- Оглавление
- Класс Stack в Java
- Что такое класс Stack в Java?
- Методы
- Размер стека
- Перебор элементов стека на Java
- Field Summary
- Fields declared in class java.util.Vector
- Fields declared in class java.util.AbstractList
- Constructor Summary
- Method Summary
- Methods declared in class java.util.Vector
- Methods declared in class java.lang.Object
- Methods declared in interface java.util.Collection
- Methods declared in interface java.util.List
- Constructor Details
- Stack
- Method Details
- push
- pop
- peek
- empty
- search
30.4. Java – Класс Stack
Класс Stack – это подкласс Vector, который реализует стандартный стек last-in, first-out.
В Java Stack только определяет стандартный конструктор, который создает пустой стек. Stack включает все методы, определённые Vector, и самостоятельно добавляет несколько своих собственных.
Методы
Кроме методов, унаследованных от его родительского класса Vector, Stack в Java определяет следующие методы.
№ | Метод и описание |
1 | boolean empty() Проверяет, является ли стек пустым. Возвращает true, если стек пустой. Возвращает false, если стек содержит элементы. |
2 | Object peek() Возвращает элемент, находящийся в верхней части стэка, но не удаляет его. |
3 | Object pop() Возвращает элемент, находящийся в верхней части стэка, удаляя его в процессе. |
4 | Object push(Object element) Вталкивает элемент в стек. Элемент также возвращается. |
5 | int search(Object element) Ищет элемент в стеке. Если найден, возвращается его смещение от вершины стека. В противном случае возвращается 1. |
Пример
Следующая программа показывает несколько методов, поддерживаемых коллекцией Stack в Java:
import java.util.*; public class StackDemo < static void showpush(Stack st, int a) < st.push(new Integer(a)); System.out.println("Втолкнуть(" + a + ")"); System.out.println("Стек: " + st); >static void showpop(Stack st) < System.out.print("Выстрелить ->"); Integer a = (Integer) st.pop(); System.out.println(a); System.out.println("Стек: " + st); > public static void main(String args[]) < Stack st = new Stack(); System.out.println("Стек: " + st); showpush(st, 42); showpush(st, 66); showpush(st, 99); showpop(st); showpop(st); showpop(st); try < showpop(st); >catch (EmptyStackException e) < System.out.println("Пустой стек"); >> >
Стек: [ ] Втолкнуть (42) Стек: [42] Втолкнуть (66) Стек: [42, 66] Втолкнуть (99) Стек: [42, 66, 99] Выстрелить -> 99 Стек: [42, 66] Выстрелить -> 66 Стек: [42] Выстрелить -> 42 Стек: [ ] Выстрелить -> Пустой стек
Оглавление
- 1. Java – Самоучитель для начинающих
- 2. Java – Обзор языка
- 3. Java – Установка и настройка
- 4. Java – Синтаксис
- 5. Java – Классы и объекты
- 6. Java – Конструкторы
- 7. Java – Типы данных и литералы
- 8. Java – Типы переменных
- 9. Java – Модификаторы
- 10. Java – Операторы
- 11. Java – Циклы и операторы цикла
- 11.1. Java – Цикл while
- 11.2. Java – Цикл for
- 11.3. Java – Улучшенный цикл for
- 11.4. Java – Цикл do..while
- 11.5. Java – Оператор break
- 11.6. Java – Оператор continue
- 12. Java – Операторы принятия решений
- 12.1. Java – Оператор if
- 12.2. Java – Оператор if..else
- 12.3. Java – Вложенный оператор if
- 12.4. Java – Оператор switch..case
- 12.5. Java – Условный оператор (? 🙂
- 13. Java – Числа
- 13.1. Java – Методы byteValue(), shortValue(), intValue(), longValue(), floatValue(), doubleValue()
- 13.2. Java – Метод compareTo()
- 13.3. Java – Метод equals()
- 13.4. Java – Метод valueOf()
- 13.5. Java – Метод toString()
- 13.6. Java – Метод parseInt()
- 13.7. Java – Метод Math.abs()
- 13.8. Java – Метод Math.ceil()
- 13.9. Java – Метод Math.floor()
- 13.10. Java – Метод Math.rint()
- 13.11. Java – Метод Math.round()
- 13.12. Java – Метод Math.min()
- 13.13. Java – Метод Math.max()
- 13.14. Java – Метод Math.exp()
- 13.15. Java – Метод Math.log()
- 13.16. Java – Метод Math.pow()
- 13.17. Java – Метод Math.sqrt()
- 13.18. Java – Метод Math.sin()
- 13.19. Java – Метод Math.cos()
- 13.20. Java – Метод Math.tan()
- 13.21. Java – Метод Math.asin()
- 13.22. Java – Метод Math.acos()
- 13.23. Java – Метод Math.atan()
- 13.24. Java – Метод Math.atan2()
- 13.25. Java – Метод Math.toDegrees()
- 13.26. Java – Метод Math.toRadians()
- 13.27. Java – Метод Math.random()
- 14. Java – Символы
- 14.1. Java – Метод Character.isLetter()
- 14.2. Java – Метод Character.isDigit()
- 14.3. Java – Метод Character.isWhitespace()
- 14.4. Java – Метод Character.isUpperCase()
- 14.5. Java – Метод Character.isLowerCase()
- 14.6. Java – Метод Character.toUpperCase()
- 14.7. Java – Метод Character.toLowerCase()
- 14.8. Java – Метод Character.toString()
- 15. Java – Строки
- 15.1. Java – Метод charAt()
- 15.2. Java – Метод compareTo()
- 15.3. Java – Метод compareToIgnoreCase()
- 15.4. Java – Метод concat()
- 15.5. Java – Метод contentEquals()
- 15.6. Java – Метод copyValueOf()
- 15.7. Java – Метод endsWith()
- 15.8. Java – Метод equals()
- 15.9. Java – Метод equalsIgnoreCase()
- 15.10. Java – Метод getBytes()
- 15.11. Java – Метод getChars()
- 15.12. Java – Метод hashCode()
- 15.13. Java – Метод indexOf()
- 15.14. Java – Метод intern()
- 15.15. Java – Метод lastIndexOf()
- 15.16. Java – Метод length()
- 15.17. Java – Метод matches()
- 15.18. Java – Метод regionMatches()
- 15.19. Java – Метод replace()
- 15.20. Java – Метод replaceAll()
- 15.21. Java – Метод replaceFirst()
- 15.22. Java – Метод split()
- 15.23. Java – Метод startsWith()
- 15.24. Java – Метод subSequence()
- 15.25. Java – Метод substring()
- 15.26. Java – Метод toCharArray()
- 15.27. Java – Метод toLowerCase()
- 15.28. Java – Метод toString()
- 15.29. Java – Метод toUpperCase()
- 15.30. Java – Метод trim()
- 15.31. Java – Метод valueOf()
- 15.32. Java – Классы StringBuilder и StringBuffer
- 15.32.1. Java – Метод append()
- 15.32.2. Java – Метод reverse()
- 15.32.3. Java – Метод delete()
- 15.32.4. Java – Метод insert()
- 15.32.5. Java – Метод replace()
- 16. Java – Массивы
- 17. Java – Дата и время
- 18. Java – Регулярные выражения
- 19. Java – Методы
- 20. Java – Потоки ввода/вывода, файлы и каталоги
- 20.1. Java – Класс ByteArrayInputStream
- 20.2. Java – Класс DataInputStream
- 20.3. Java – Класс ByteArrayOutputStream
- 20.4. Java – Класс DataOutputStream
- 20.5. Java – Класс File
- 20.6. Java – Класс FileReader
- 20.7. Java – Класс FileWriter
- 21. Java – Исключения
- 21.1. Java – Встроенные исключения
- 22. Java – Вложенные и внутренние классы
- 23. Java – Наследование
- 24. Java – Переопределение
- 25. Java – Полиморфизм
- 26. Java – Абстракция
- 27. Java – Инкапсуляция
- 28. Java – Интерфейсы
- 29. Java – Пакеты
- 30. Java – Структуры данных
- 30.1. Java – Интерфейс Enumeration
- 30.2. Java – Класс BitSet
- 30.3. Java – Класс Vector
- 30.4. Java – Класс Stack
- 30.5. Java – Класс Dictionary
- 30.6. Java – Класс Hashtable
- 30.7. Java – Класс Properties
- 31. Java – Коллекции
- 31.1. Java – Интерфейс Collection
- 31.2. Java – Интерфейс List
- 31.3. Java – Интерфейс Set
- 31.4. Java – Интерфейс SortedSet
- 31.5. Java – Интерфейс Map
- 31.6. Java – Интерфейс Map.Entry
- 31.7. Java – Интерфейс SortedMap
- 31.8. Java – Класс LinkedList
- 31.9. Java – Класс ArrayList
- 31.10. Java – Класс HashSet
- 31.11. Java – Класс LinkedHashSet
- 31.12. Java – Класс TreeSet
- 31.13. Java – Класс HashMap
- 31.14. Java – Класс TreeMap
- 31.15. Java – Класс WeakHashMap
- 31.16. Java – Класс LinkedHashMap
- 31.17. Java – Класс IdentityHashMap
- 31.18. Java – Алгоритмы Collection
- 31.19. Java – Iterator и ListIterator
- 31.20. Java – Comparator
- 32. Java – Дженерики
- 33. Java – Сериализация
- 34. Java – Сеть
- 34.1. Java – Обработка URL
- 35. Java – Отправка Email
- 36. Java – Многопоточность
- 36.1. Java – Синхронизация потоков
- 36.2. Java – Межпоточная связь
- 36.3. Java – Взаимная блокировка потоков
- 36.4. Java – Управление потоками
- 37. Java – Основы работы с апплетами
- 38. Java – Javadoc
Класс Stack в Java
Класс стека в Java является частью платформы Collection, которая упрощает различные операции, такие как push, pop и т. д.
Что такое класс Stack в Java?
Класс Stack в Java – это структура данных, которая следует за LIFO (Last In First Out). Java Stack Class подпадает под базовую платформу Collection Hierarchy Framework, в которой вы можете выполнять базовые операции, такие как push, pop и т. д.
Мы знаем, что инфраструктура Java collection включает в себя интерфейсы и классы. Теперь давайте разберемся, как этот класс организован в иерархии инфраструктуры коллекций Java.
В приведенной выше иерархии синий прямоугольник относится к различным интерфейсам, а желтый прямоугольник определяет класс. Стек в Java расширяет векторный класс, который дополнительно реализует интерфейс List. Всякий раз, когда вы создаете стек, изначально он не содержит какого-либо элемента, т. е. Стек пуст.
Методы
В Java в основном существует 5 методов класса стека.
Метод | Описание |
empty() | Проверяет, пуст ли стек |
push() | Ставит элемент в верх стека |
pop() | Удаляет объект из стека |
peek() | Рассматривает объект стека, не удаляя его |
search() | Поиск элемента для получения его индекса |
Давайте разберемся с каждым из этих методов на программном примере:
package Edureka; import java.io.*; import java.util.*; public class StackMethods < //add or push element on the top of the stack static void push_method(Stack st, int n) < st.push(new Integer(n)); System.out.println("push(" +n+ ")"); System.out.println("Current Stack: " + st); >// Display element on the top of the stack static void peek_method(Stackamp;amp;amp;lt;Integeramp;amp;amp;gt; st) < Integer element = (Integer) st.peek(); System.out.println("Element on stack top : " + element); >// Searches element in the stack static void search_method(Stack st, int element) < Integer pos = (Integer) st.search(element); if(pos == -1) System.out.println("Element not found"); else System.out.println("Element is found at position " + pos); >// Removes element from the top of the stack static void pop_method(Stack st) < System.out.print("pop = "); Integer n = (Integer) st.pop(); System.out.println(n); System.out.println("Remaining stack: " + st); >public static void main(String args[]) < Stack st = new Stack(); System.out.println("Empty stack: " + st); push_method(st, 4); push_method(st, 8); push_method(st, 9); peek_method(st); search_method(st, 2); search_method(st, 4); pop_method(st); pop_method(st); pop_method(st); try < pop_method(st); >catch (EmptyStackException e) < System.out.println("empty stack"); >> >
Empty stack: []
push(4)
Current Stack: [4]
push(8)
Current Stack: [4, 8]
push(9)
Current Stack: [4, 8, 9]
Element on stack top: 9
Element not found
Element is found at position 3
pop = 9
Remaining stack: [4, 8]
pop = 8
Remaining stack: [4]
pop = 4
Remaining stack: []
pop = empty stack
Объяснение: В приведенной выше Java-программе я сначала напечатал пустой стек и добавил несколько элементов, используя метод Push. Как только элементы присутствуют в стеке, я отобразил элементы сверху стека, используя метод Peek.
После этого я выполнил поиск с использованием метода Search и, наконец, удалил элементы в классе Java Stack с помощью метода Pop.
Размер стека
package Edureka; import java.util.EmptyStackException; import java.util.Stack; public class StackOperations < public static void main (String[] args) < Stack stack = new Stack(); stack.push("1"); stack.push("2"); stack.push("3"); // Check if the Stack is empty System.out.println("Is the Java Stack empty? " + stack.isEmpty()); // Find the size of Stack System.out.println("Size of Stack : " + stack.size()); >>
Вывод: Is the Java Stack empty? false
Size of Stack : 3
Перебор элементов стека на Java
- Итерация по стеку с использованием iterator()
- Перебор стека с использованием Java 8 forEach()
- Перебор стека с использованием listIterator() сверху вниз
Давайте начнем перебирать элементы с помощью iterator().
package Edureka; import java.util.EmptyStackException; import java.util.Iterator; import java.util.Stack; public class StackOperations < public static void main (String[] args) < Stack stack = new Stack(); stack.push("1"); stack.push("2"); stack.push("3"); Iterator iterator = stack.iterator(); while(iterator.hasNext())< Object value = iterator.next(); System.out.println(value); >> >
Точно так же вы можете выполнить итерацию другими методами.
package demo; import java.util.EmptyStackException; import java.util.Iterator; import java.util.ListIterator; import java.util.Stack; public class JavaOperators < public static void main (String[] args) < Stack stack = new Stack(); stack.push("1"); stack.push("2"); stack.push("3"); System.out.println("Iterate a stack using forEach() Method:"); stack.forEach(n ->; < System.out.println(n); >); ListIterator ListIterator = stack.listIterator(stack.size()); System.out.println("Iterate over a Stack using listIterator() from Top to Bottom:"); while (ListIterator.hasPrevious()) < String str = ListIterator.previous(); System.out.println(str); >>>
Вывод: итерация стека с помощью forEach():
Итерация с использованием listIterator() сверху вниз:
Объяснение: В приведенном выше коде вы можете увидеть итерацию с помощью метода forEach(), а затем повернуть ее с помощью listIterator() сверху вниз в стеке.
Средняя оценка 4.2 / 5. Количество голосов: 6
Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.
Видим, что вы не нашли ответ на свой вопрос.
Напишите комментарий, что можно добавить к статье, какой информации не хватает.
Class Stack
The Stack class represents a last-in-first-out (LIFO) stack of objects. It extends class Vector with five operations that allow a vector to be treated as a stack. The usual push and pop operations are provided, as well as a method to peek at the top item on the stack, a method to test for whether the stack is empty , and a method to search the stack for an item and discover how far it is from the top.
When a stack is first created, it contains no items.
A more complete and consistent set of LIFO stack operations is provided by the Deque interface and its implementations, which should be used in preference to this class. For example:
Deque stack = new ArrayDeque();
Field Summary
Fields declared in class java.util.Vector
Fields declared in class java.util.AbstractList
Constructor Summary
Method Summary
Methods declared in class java.util.Vector
Methods declared in class java.lang.Object
Methods declared in interface java.util.Collection
Methods declared in interface java.util.List
Constructor Details
Stack
Method Details
push
pop
peek
empty
search
Returns the 1-based position where an object is on this stack. If the object o occurs as an item in this stack, this method returns the distance from the top of the stack of the occurrence nearest the top of the stack; the topmost item on the stack is considered to be at distance 1 . The equals method is used to compare o to the items in this stack.
Report a bug or suggest an enhancement
For further API reference and developer documentation see the Java SE Documentation, which contains more detailed, developer-targeted descriptions with conceptual overviews, definitions of terms, workarounds, and working code examples. Other versions.
Java is a trademark or registered trademark of Oracle and/or its affiliates in the US and other countries.
Copyright © 1993, 2023, Oracle and/or its affiliates, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
All rights reserved. Use is subject to license terms and the documentation redistribution policy.