The stog je linearna struktura podataka koja se koristi za pohranjivanje zbirke objekata. Temelji se na Zadnji ušao prvi izašao (LIFO). Java zbirka okvir pruža mnoga sučelja i klase za pohranu zbirke objekata. Jedan od njih je Stack klasa koji pruža različite operacije kao što su push, pop, search itd.
U ovom odjeljku raspravljat ćemo o Java Stack klasa , njegovo metode, i implementirati struktura podataka stog u a Java program . Ali prije nego prijeđete na klasu Java Stack, brzo pogledajte kako stog radi.
Struktura podataka stog ima dvije najvažnije operacije koje su gurnuti i pop . Operacija push umeće element u stog, a operacija pop uklanja element s vrha stoga. Pogledajmo kako rade na stogu.
Gurnimo redom 20, 13, 89, 90, 11, 45, 18 u stog.
Uklonimo (iskočimo) 18, 45 i 11 sa snopa.
Prazan stog: Ako stog nema nijedan element, poznat je kao an prazan stog . Kada je stog prazan, vrijednost gornje varijable je -1.
Kada gurnemo element u stog vrh je povećan za 1 . Na sljedećoj slici,
- Pritisnite 12, vrh=0
- Pritisnite 6, vrh=1
- Pritisnite 9, vrh=2
Kada izbacimo element iz hrpe, vrijednost vrha je smanjen za 1 . Na sljedećoj slici izdvojili smo 9.
Sljedeća tablica prikazuje različite vrijednosti vrha.
Java stack klasa
U Javi, Stog je klasa koja potpada pod okvir zbirke koji proširuje Vektor razreda. Također implementira sučelja Popis, zbirka, iterabilnost, kloniranje, serijalizacija. Predstavlja LIFO hrpu objekata. Prije korištenja klase Stack, moramo uvestijava.utilpaket. Klasa hrpa raspoređena u hijerarhiji okvira zbirki, kao što je prikazano u nastavku.
Stack Class Constructor
Stack klasa sadrži samo zadani konstruktor koji stvara prazan stog.
string u json java
public Stack()
Stvaranje hrpe
Ako želimo stvoriti stog, prvo uvezimojava.utilpakirati i kreirati objekt klase Stack.
Stack stk = new Stack();
Ili
Stack stk = new Stack();
Gdje tip označava vrstu stoga kao što je cijeli broj, niz itd.
Metode klase Stack
Možemo izvesti operacije push, pop, peek i search na stogu. Klasa Java Stack pruža uglavnom pet metoda za izvođenje ovih operacija. Uz to, također nudi sve metode Java Vector klasa .
metoda | Modifikator i vrsta | Opis metode |
---|---|---|
prazan() | Booleov | Metoda provjerava je li stog prazan ili ne. |
guranje (E stavka) | I | Metoda gura (ubacuje) element na vrh hrpe. |
pop() | I | Metoda uklanja element s vrha stoga i vraća isti element kao vrijednost te funkcije. |
zaviriti() | I | Metoda gleda na gornji element hrpe bez njegovog uklanjanja. |
pretraživanje (objekt o) | int | Metoda pretražuje navedeni objekt i vraća položaj objekta. |
Stack Class empty() metoda
The prazan() metoda klase Stack provjerava je li stog prazan ili ne. Ako je stog prazan, vraća true, inače vraća false. Također možemo koristiti metodu isEmpty() klase Vector.
Sintaksa
public boolean empty()
Povratak: Metoda vraća true ako je stog prazan, inače vraća false.
U sljedećem primjeru stvorili smo instancu klase Stack. Nakon toga, pozvali smo metodu empty() dva puta. Prvi put se vraća pravi jer nijedan element nismo gurnuli u stog. Nakon toga smo gurnuli elemente u stog. Opet smo pozvali metodu empty() koja vraća lažno jer stog nije prazan.
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); } }
Izlaz:
Is the stack empty? true Elements in Stack: [78, 113, 90, 120] Is the stack empty? false
Stack Class push() metoda
Metoda umeće stavku na vrh hrpe. Radi isto kao i metoda addElement(item) klase Vector. Prolazi parametar artikal da se gurne u stog.
Sintaksa
public E push(E item)
Parametar: Stavka koju treba gurnuti na vrh hrpe.
Povratak: Metoda vraća argument koji smo proslijedili kao parametar.
Stack Class pop() metoda
Metoda uklanja objekt na vrhu stoga i vraća isti objekt. Baca se EmptyStackException ako je stog prazan.
Sintaksa
public E pop()
Povratak: Vraća objekt koji je na vrhu stoga.
Implementirajmo stog u Java program i izvodimo push i pop operacije.
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); } }
Izlaz:
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]
Stack Class peek() metoda
Gleda element koji je na vrhu u nizu. Također baca EmptyStackException ako je stog prazan.
Sintaksa
public E peek()
Povratak: Vraća gornje elemente stoga.
Pogledajmo primjer metode peek().
kako pretvoriti iz niza u int
StackPeekMethodExample.java
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); } }
Izlaz:
Stack: [Apple, Grapes, Mango, Orange] Element at the top of the stack: Orange
Stack Class search() Metoda
Metoda pretražuje objekt u hrpi od vrha. Raščlanjuje parametar koji želimo tražiti. Vraća lokaciju objekta u stogu temeljenu na 1. Najviši objekt hrpe smatra se na udaljenosti 1.
Pretpostavimo da je o objekt u stogu koji želimo tražiti. Metoda vraća udaljenost od vrha snopa pojavljivanja najbližeg vrhu snopa. Koristi se jednako() metoda za pretraživanje objekta u stogu.
Sintaksa
public int search(Object o)
Parametar: o je željeni objekt koji se traži.
Povratak: Vraća lokaciju objekta s vrha stoga. Ako vrati -1, to znači da objekt nije na stogu.
Pogledajmo primjer metode search().
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 Stack Operacije
Veličina hrpe
Također možemo pronaći veličinu hrpe pomoću metode size() klase Vector. Vraća ukupan broj elemenata (veličinu stoga) u stogu.
Sintaksa
public int size()
Pogledajmo primjer size() metode klase 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); } }
Izlaz:
Is the stack empty or not? false The stack size is: 5
Ponavljanje elemenata
Iterirati znači dohvatiti elemente steka. Elemente hrpe možemo dohvatiti pomoću tri različite metode koje su sljedeće:
- Korištenje iterator() metoda
- Korištenje za svakoga() metoda
- Korištenje listIterator() metoda
Korištenje metode iterator().
To je metoda sučelja Iteratora. Vraća iterator preko elemenata u stogu. Prije korištenja metode iterator() uvezitejava.util.Iteratorpaket.
Sintaksa
Iterator iterator()
Izvedimo iteraciju nad stogom.
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); } } }
Izlaz:
BMW Audi Ferrari Bugatti Jaguar
Korištenje metode forEach().
Java nudi metodu forEach() za ponavljanje elemenata. Metoda je definirana u Iterable i Stream sučelje.
popis java
Sintaksa
default void forEach(Consumeraction)
Iterirajmo po stogu pomoću metode 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); }); } }
Izlaz:
Iteration over the stack using forEach() Method: 119 203 988
Korištenje metode listIterator().
Ova metoda vraća iterator popisa preko elemenata u spomenutom popisu (u nizu), počevši od navedene pozicije na popisu. Ponavlja stog od vrha do dna.
Sintaksa
ListIterator listIterator(int index)
Parametar: Metoda analizira parametar pod nazivom indeks.
Povratak: Ova metoda vraća iterator popisa preko elemenata, u nizu.
Iznimka: Baca se IndexOutOfBoundsException ako je indeks izvan raspona.
Iterirajmo po stogu pomoću metode 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); } } }
Izlaz:
Iteration over the Stack from top to bottom: 988 203 119