The стек це лінійна структура даних, яка використовується для зберігання колекції об’єктів. В її основі лежить Останній прийшов-перший вийшов (ЛІФО). Колекція Java Framework надає багато інтерфейсів і класів для зберігання колекції об'єктів. Одним із них є Клас стека який забезпечує різні операції, такі як push, pop, search тощо.
У цьому розділі ми обговоримо Клас Java Stack , його методи, і реалізувати структура даних стека в a Java програма . Але перш ніж перейти до класу Java Stack, коротко ознайомтеся з тим, як працює стек.
Структура даних стека має дві найважливіші операції штовхати і поп . Операція push вставляє елемент у стек, а операція pop видаляє елемент із вершини стеку. Давайте подивимося, як вони працюють у стеку.
Давайте помістимо 20, 13, 89, 90, 11, 45, 18 відповідно в стек.
Давайте видалимо (видалимо) 18, 45 і 11 зі стеку.
Порожній стек: Якщо стек не має жодного елемента, він відомий як an порожній стек . Коли стек порожній, значення верхньої змінної дорівнює -1.
нормалізація в базі даних
Коли ми вставляємо елемент у стек, вершина є вершиною збільшився на 1 . На наступному малюнку
- Натисніть 12, зверху=0
- Натисніть 6, зверху=1
- Натисніть 9, зверху=2
Коли ми витягуємо елемент зі стеку, значення top дорівнює зменшився на 1 . На наступному малюнку ми отримали 9.
У наведеній нижче таблиці показано різні значення вершини.
Клас стека Java
На Java, Стек це клас, який підпадає під структуру Collection, яка розширює Вектор клас. Він також реалізує інтерфейси Список, колекція, ітерація, клонування, серіалізація. Він представляє стек об’єктів LIFO. Перш ніж використовувати клас Stack, ми повинні імпортуватиjava.utilпакет. Клас стека, упорядкований в ієрархії структури Collections, як показано нижче.
Конструктор класу стека
Клас Stack містить лише конструктор за замовчуванням що створює порожній стек.
public Stack()
Створення стека
Якщо ми хочемо створити стек, спочатку імпортуйтеjava.utilпакет і створити об’єкт класу Stack.
Stack stk = new Stack();
Або
Stack stk = new Stack();
Де тип позначає тип стека, наприклад Integer, String тощо.
Методи класу стека
Ми можемо виконувати операції push, pop, peek і пошуку в стеку. Клас Java Stack надає в основному п'ять методів для виконання цих операцій. Крім того, він також надає всі методи Клас Java Vector .
метод | Модифікатор і тип | Опис методу |
---|---|---|
порожній() | логічний | Метод перевіряє, порожній стек чи ні. |
push (елемент E) | І | Метод виштовхує (вставляє) елемент на вершину стека. |
поп() | І | Метод видаляє елемент із вершини стека та повертає той самий елемент, що й значення цієї функції. |
peek() | І | Метод дивиться на верхній елемент стека, не видаляючи його. |
пошук (об'єкт o) | внутр | Метод шукає вказаний об’єкт і повертає позицію об’єкта. |
Метод стека класу empty().
The порожній() метод класу Stack перевіряє порожній стек чи ні. Якщо стек порожній, він повертає true, інакше повертає false. Ми також можемо використовувати метод isEmpty() класу Vector.
Синтаксис
public boolean empty()
Повернення: Метод повертає true, якщо стек порожній, інакше повертає false.
У наступному прикладі ми створили екземпляр класу Stack. Після цього ми два рази викликали метод empty(). Перший раз повертається правда оскільки ми не вставили жодного елемента в стек. Після цього ми помістили елементи в стек. Знову ми викликали метод empty(), який повертає помилковий тому що стек не порожній.
StackEmptyMethodExample.java
import java.util.Stack; public class StackEmptyMethodExample { public static void main(String[] args) { //creating an instance of Stack class Stack stk= new Stack(); // checking stack is empty or not boolean result = stk.empty(); System.out.println('Is the stack empty? ' + result); // pushing elements into stack stk.push(78); stk.push(113); stk.push(90); stk.push(120); //prints elements of the stack System.out.println('Elements in Stack: ' + stk); result = stk.empty(); System.out.println('Is the stack empty? ' + result); } }
Вихід:
java значення enum
Is the stack empty? true Elements in Stack: [78, 113, 90, 120] Is the stack empty? false
Метод push() класу стека
Метод вставляє елемент на вершину стека. Він працює так само, як метод addElement(item) класу Vector. Він передає параметр пункт бути вставленим у стек.
Синтаксис
public E push(E item)
Параметр: Предмет, який потрібно помістити на вершину стека.
Повернення: Метод повертає аргумент, який ми передали як параметр.
Метод стека класу pop().
Метод видаляє об’єкт у верхній частині стека та повертає той самий об’єкт. Це кидає EmptyStackException якщо стек порожній.
Синтаксис
public E pop()
Повернення: Він повертає об’єкт, який знаходиться у верхній частині стека.
Давайте реалізуємо стек у програмі на Java та виконаємо операції push і pop.
StackPushPopExample.java
import java.util.*; public class StackPushPopExample { public static void main(String args[]) { //creating an object of Stack class Stack stk = new Stack(); System.out.println('stack: ' + stk); //pushing elements into the stack pushelmnt(stk, 20); pushelmnt(stk, 13); pushelmnt(stk, 89); pushelmnt(stk, 90); pushelmnt(stk, 11); pushelmnt(stk, 45); pushelmnt(stk, 18); //popping elements from the stack popelmnt(stk); popelmnt(stk); //throws exception if the stack is empty try { popelmnt(stk); } catch (EmptyStackException e) { System.out.println('empty stack'); } } //performing push operation static void pushelmnt(Stack stk, int x) { //invoking push() method stk.push(new Integer(x)); System.out.println('push -> ' + x); //prints modified stack System.out.println('stack: ' + stk); } //performing pop operation static void popelmnt(Stack stk) { System.out.print('pop -> '); //invoking pop() method Integer x = (Integer) stk.pop(); System.out.println(x); //prints modified stack System.out.println('stack: ' + stk); } }
Вихід:
stack: [] push -> 20 stack: [20] push -> 13 stack: [20, 13] push -> 89 stack: [20, 13, 89] push -> 90 stack: [20, 13, 89, 90] push -> 11 stack: [20, 13, 89, 90, 11] push -> 45 stack: [20, 13, 89, 90, 11, 45] push -> 18 stack: [20, 13, 89, 90, 11, 45, 18] pop -> 18 stack: [20, 13, 89, 90, 11, 45] pop -> 45 stack: [20, 13, 89, 90, 11] pop -> 11 stack: [20, 13, 89, 90]
Метод стека класу peek().
Він дивиться на елемент, який знаходиться на вершині стека. Також кидає EmptyStackException якщо стек порожній.
Синтаксис
public E peek()
Повернення: Він повертає верхні елементи стека.
Давайте розглянемо приклад методу peek().
StackPeekMethodExample.java
програма успадкування на python
import java.util.Stack; public class StackPeekMethodExample { public static void main(String[] args) { Stack stk= new Stack(); // pushing elements into Stack stk.push('Apple'); stk.push('Grapes'); stk.push('Mango'); stk.push('Orange'); System.out.println('Stack: ' + stk); // Access element from the top of the stack String fruits = stk.peek(); //prints stack System.out.println('Element at top: ' + fruits); } }
Вихід:
Stack: [Apple, Grapes, Mango, Orange] Element at the top of the stack: Orange
Метод Stack Class search().
Метод шукає об’єкт у стеку зверху. Він аналізує параметр, який ми хочемо шукати. Він повертає розташування об’єкта в стеку на основі 1. Самий верхній об’єкт стека вважається на відстані 1.
Припустимо, o — це об’єкт у стеку, який ми хочемо знайти. Метод повертає відстань від вершини стека до входження, найближчого до вершини стека. Це використовує дорівнює() метод пошуку об’єкта в стеку.
Синтаксис
public int search(Object o)
Параметр: o – бажаний об’єкт для пошуку.
Повернення: Він повертає розташування об’єкта з вершини стека. Якщо він повертає -1, це означає, що об’єкта немає в стеку.
Давайте розглянемо приклад методу search().
масив у java
StackSearchMethodExample.java
import java.util.Stack; public class StackSearchMethodExample { public static void main(String[] args) { Stack stk= new Stack(); //pushing elements into Stack stk.push('Mac Book'); stk.push('HP'); stk.push('DELL'); stk.push('Asus'); System.out.println('Stack: ' + stk); // Search an element int location = stk.search('HP'); System.out.println('Location of Dell: ' + location); } }
Операції стека Java
Розмір стека
Ми також можемо знайти розмір стека за допомогою методу size() класу Vector. Він повертає загальну кількість елементів (розмір стеку) у стеку.
Синтаксис
public int size()
Давайте розглянемо приклад методу size() класу Vector.
StackSizeExample.java
import java.util.Stack; public class StackSizeExample { public static void main (String[] args) { Stack stk = new Stack(); stk.push(22); stk.push(33); stk.push(44); stk.push(55); stk.push(66); // Checks the Stack is empty or not boolean rslt=stk.empty(); System.out.println('Is the stack empty or not? ' +rslt); // Find the size of the Stack int x=stk.size(); System.out.println('The stack size is: '+x); } }
Вихід:
Is the stack empty or not? false The stack size is: 5
Ітерація елементів
Ітерація означає вибірку елементів стека. Ми можемо отримати елементи стека за допомогою трьох різних методів:
- Використання ітератор() метод
- Використання для кожного() метод
- Використання listIterator() метод
Використання методу iterator().
Це метод інтерфейсу Iterator. Він повертає ітератор для елементів у стеку. Перед використанням методу iterator() імпортуйтеjava.util.Iteratorпакет.
Синтаксис
Iterator iterator()
Давайте виконаємо ітерацію над стеком.
що таке селектори в css
StackIterationExample1.java
import java.util.Iterator; import java.util.Stack; public class StackIterationExample1 { public static void main (String[] args) { //creating an object of Stack class Stack stk = new Stack(); //pushing elements into stack stk.push('BMW'); stk.push('Audi'); stk.push('Ferrari'); stk.push('Bugatti'); stk.push('Jaguar'); //iteration over the stack Iterator iterator = stk.iterator(); while(iterator.hasNext()) { Object values = iterator.next(); System.out.println(values); } } }
Вихід:
BMW Audi Ferrari Bugatti Jaguar
Використання методу forEach().
Java надає метод forEach() для повторення елементів. Метод визначено в Повторювані і Потік інтерфейс.
Синтаксис
default void forEach(Consumeraction)
Давайте перебираємо стек за допомогою методу forEach().
StackIterationExample2.java
import java.util.*; public class StackIterationExample2 { public static void main (String[] args) { //creating an instance of Stack class Stack stk = new Stack(); //pushing elements into stack stk.push(119); stk.push(203); stk.push(988); System.out.println('Iteration over the stack using forEach() Method:'); //invoking forEach() method for iteration over the stack stk.forEach(n -> { System.out.println(n); }); } }
Вихід:
Iteration over the stack using forEach() Method: 119 203 988
Використання методу listIterator().
Цей метод повертає ітератор списку над елементами у згаданому списку (послідовно), починаючи з указаної позиції у списку. Він повторює стек зверху вниз.
Синтаксис
ListIterator listIterator(int index)
Параметр: Метод аналізує параметр під назвою індекс.
Повернення: Цей метод повертає ітератор списку для елементів послідовно.
Виняток: Це кидає IndexOutOfBoundsException якщо індекс виходить за межі діапазону.
Давайте перебираємо стек за допомогою методу listIterator().
StackIterationExample3.java
import java.util.Iterator; import java.util.ListIterator; import java.util.Stack; public class StackIterationExample3 { public static void main (String[] args) { Stack stk = new Stack(); stk.push(119); stk.push(203); stk.push(988); ListIterator ListIterator = stk.listIterator(stk.size()); System.out.println('Iteration over the Stack from top to bottom:'); while (ListIterator.hasPrevious()) { Integer avg = ListIterator.previous(); System.out.println(avg); } } }
Вихід:
Iteration over the Stack from top to bottom: 988 203 119