logo

Stack Class Java

Java Kolekcijas ietvars nodrošina Stack klasi, kas modelē un ievieš a Zemāk redzamā diagramma parāda Stack klases hierarhija :

Stack Class Java



Klase atbalsta vienu noklusējuma konstruktors Kaudze() kas ir pieradis izveidot tukšu kaudzi .

Deklarācija:

public class Stack extends Vector>

Visas ieviestās saskarnes:

Kā izveidot kaudzi?

Lai izveidotu steku, mums ir jāimportē java.util.stack pakotni un izmantojiet šīs klases konstruktoru Stack(). Tālāk sniegtajā piemērā tiek izveidota tukša kaudze.

Stack kaudze = new Stack();

Šeit E ir objekta veids.

Piemērs:

Java




// Java code for stack implementation> import> java.io.*;> import> java.util.*;> class> Test> {> >// Pushing element on the top of the stack> >static> void> stack_push(Stack stack)> >{> >for>(>int> i =>0>; i <>5>; i++)> >{> >stack.push(i);> >}> >}> > >// Popping element from the top of the stack> >static> void> stack_pop(Stack stack)> >{> >System.out.println(>'Pop Operation:'>);> >for>(>int> i =>0>; i <>5>; i++)> >{> >Integer y = (Integer) stack.pop();> >System.out.println(y);> >}> >}> >// Displaying element on the top of the stack> >static> void> stack_peek(Stack stack)> >{> >Integer element = (Integer) stack.peek();> >System.out.println(>'Element on stack top: '> + element);> >}> > >// Searching element in the stack> >static> void> stack_search(Stack stack,>int> element)> >{> >Integer pos = (Integer) stack.search(element);> >if>(pos == ->1>)> >System.out.println(>'Element not found'>);> >else> >System.out.println(>'Element is found at position: '> + pos);> >}> >public> static> void> main (String[] args)> >{> >Stack stack =>new> Stack();> >stack_push(stack);> >stack_pop(stack);> >stack_push(stack);> >stack_peek(stack);> >stack_search(stack,>2>);> >stack_search(stack,>6>);> >}> }>

aktuāls java datums

>

>

Izvade:

Pop Operation: 4 3 2 1 0 Element on stack top: 4 Element is found at position: 3 Element not found>

Dažādu operāciju veikšana Stack klasē

1. Elementu pievienošana: Lai stekam pievienotu kādu elementu, varam izmantot push() metode . Šis push () darbība novietojiet elementu kaudzes augšpusē.

Java




// Java program to add the> // elements in the stack> import> java.io.*;> import> java.util.*;> class> StackDemo {> > >// Main Method> >public> static> void> main(String[] args)> >{> >// Default initialization of Stack> >Stack stack1 =>new> Stack();> >// Initialization of Stack> >// using Generics> >Stack stack2 =>new> Stack();> >// pushing the elements> >stack1.push(>'4'>);> >stack1.push(>'All'>);> >stack1.push(>'Geeks'>);> >stack2.push(>'Geeks'>);> >stack2.push(>'For'>);> >stack2.push(>'Geeks'>);> >// Printing the Stack Elements> >System.out.println(stack1);> >System.out.println(stack2);> >}> }>

>

>

Izvade:

[4, All, Geeks] [Geeks, For, Geeks]>

2. Piekļuve elementam: Lai izgūtu vai ienest pirmo steka elementu vai elementu, kas atrodas steka augšpusē, mēs varam izmantot palūrēt () metodi. Izgūtais elements netiek dzēsts vai noņemts no steka.

Java




// Java program to demonstrate the accessing> // of the elements from the stack> import> java.util.*;> import> java.io.*;> public> class> StackDemo {> >// Main Method> >public> static> void> main(String args[])> >{> >// Creating an empty Stack> >Stack stack =>new> Stack();> >// Use push() to add elements into the Stack> >stack.push(>'Welcome'>);> >stack.push(>'To'>);> >stack.push(>'Geeks'>);> >stack.push(>'For'>);> >stack.push(>'Geeks'>);> >// Displaying the Stack> >System.out.println(>'Initial Stack: '> + stack);> >// Fetching the element at the head of the Stack> >System.out.println(>'The element at the top of the'> >+>' stack is: '> + stack.peek());> >// Displaying the Stack after the Operation> >System.out.println(>'Final Stack: '> + stack);> >}> }>

masīvi java

>

>

Izvade:

Initial Stack: [Welcome, To, Geeks, For, Geeks] The element at the top of the stack is: Geeks Final Stack: [Welcome, To, Geeks, For, Geeks]>

3. Elementu noņemšana: Lai izceltu elementu no kaudzes, mēs varam izmantot pop () metodi. Elements tiek izspiests no kaudzes augšdaļas un tiek noņemts no tā paša.

Java




// Java program to demonstrate the removing> // of the elements from the stack> import> java.util.*;> import> java.io.*;> public> class> StackDemo {> >public> static> void> main(String args[])> >{> >// Creating an empty Stack> >Stack stack =>new> Stack();> >// Use add() method to add elements> >stack.push(>10>);> >stack.push(>15>);> >stack.push(>30>);> >stack.push(>20>);> >stack.push(>5>);> >// Displaying the Stack> >System.out.println(>'Initial Stack: '> + stack);> >// Removing elements using pop() method> >System.out.println(>'Popped element: '> >+ stack.pop());> >System.out.println(>'Popped element: '> >+ stack.pop());> >// Displaying the Stack after pop operation> >System.out.println(>'Stack after pop operation '> >+ stack);> >}> }>

>

>

Izvade:

Initial Stack: [10, 15, 30, 20, 5] Popped element: 5 Popped element: 20 Stack after pop operation [10, 15, 30]>

Piemērs

Programmā Java klase Stack ir Vector klases apakšklase, un tā apzīmē objektu skursteni, kas atrodas pirmajā vietā (LIFO). Tas paplašina Vector klasi, lai varētu viegli ieviest steka datu struktūru.

Šeit ir piemērs, kā Java var izmantot Stack klasi:

Java




import> java.util.Stack;> public> class> StackExample {> >public> static> void> main(String[] args) {> >// Create a new stack> >Stack stack =>new> Stack();> >// Push elements onto the stack> >stack.push(>1>);> >stack.push(>2>);> >stack.push(>3>);> >stack.push(>4>);> >// Pop elements from the stack> >while>(!stack.isEmpty()) {> >System.out.println(stack.pop());> >}> >}> }>

mia khalifa vecums

>

>

Izvade

4 3 2 1>

Šajā piemērā mēs vispirms importējam klase Stack no pakotnes java.util. Pēc tam mēs izveidojam jaunu Stack objektu, ko sauc par steku, izmantojot noklusējuma konstruktoru. Mēs nospiežam četrus veselus skaitļus uz kaudzītes, izmantojot push() metodi. Pēc tam elementi tiek izlikti no steka, izmantojot pop() metodi, kamēr cilpas ietvaros. Metode isEmpty() tiek izmantota, lai pārbaudītu, vai kaudze ir tukša, pirms mēģināt izspiest elementu.

Šis kods izveido veselu skaitļu kaudzi un nospiež kaudzē 4 veselus skaitļus secībā 1 -> 2 -> 3 -> 4. Pēc tam mēs pa vienam izņemam elementus no steka, izmantojot pop() metodi, kas noņem un atgriež kaudzes augšējais elements. Tā kā kaudze seko secībai “pēdējais-pirmais-ārā” (LIFO), elementi tiek parādīti apgrieztā ievietošanas secībā, kā rezultātā tiek parādīta iepriekš redzamā izvade.

Klase Stack nodrošina vairākas citas metodes, kā manipulēt ar steku, piemēram, peek(), lai izgūtu augšējo elementu, to nenoņemot, search(), lai meklētu elementu kaudzē un atgrieztu tā pozīciju, un size(), lai atgrieztu pašreizējo elementu. kaudzes lielums. Klase Stack nodrošina arī vairākus konstruktorus, lai izveidotu steku ar noteiktu sākotnējo ietilpību vai kopētu esošu steku.

Metodes kaudzes klasē

METODE

APRAKSTS

tukšs ()

Tas atgriežas ar patiesu vērtību, ja nekas nav redzams kaudzes augšdaļā. Citādi atgriež nepatiesi.

palūrēt ()

Atgriež elementu kaudzes augšpusē, bet nenoņem to.

pop ()

Noņem un atgriež kaudzes augšējo elementu. “EmptyStackException”

Izņēmums tiek izmests, ja mēs izsaucam pop(), kad izsaukšanas steks ir tukšs.

push (objekta elements)

Nospiež elementu kaudzes augšpusē.

meklēt (objekta elements)

Tas nosaka, vai kaudzē eksistē objekts. Ja elements ir atrasts,

Tas atgriež elementa pozīciju no kaudzes augšdaļas. Citādi tas atgriež -1.

Metodes, kas mantotas no klases java.util.Vector

METODE

APRAKSTS

pievienot (Objekts objekts) Pievieno norādīto elementu šī vektora beigām.
pievienot (indekss, objekta objekts) Ievieto norādīto elementu norādītajā pozīcijā šajā vektorā.
pievienot visu (c kolekcija)

pievieno visus norādītās kolekcijas elementus šī vektora beigām,

tādā secībā, kādā tos atgriež norādītās kolekcijas iterators.

pievienot visu(int indekss, kolekcija c) Ievieto visus norādītās kolekcijas elementus šajā vektorā norādītajā vietā.
addElement (Object o) Pievieno norādīto komponentu šī vektora beigām, palielinot tā izmēru par vienu.
ietilpība () Atgriež šī vektora pašreizējo kapacitāti.
skaidrs () Noņem visus elementus no šī vektora.
klons () Atgriež šī vektora klonu.
satur (Objekts o) Atgriež patieso vērtību, ja šis vektors satur norādīto elementu.
satur visu (c kolekcija) Atgriež vērtību True, ja šajā vektorā ir visi norādītās kolekcijas elementi.
copyInto(Objektu []masīvs) Kopē šī vektora komponentus norādītajā masīvā.
elementsAt(int indekss) Atgriež komponentu ar norādīto indeksu.
elementi () Atgriež šī vektora komponentu uzskaitījumu.
nodrošinātCapacity (int minCapacity)

Ja nepieciešams, palielina šī vektora ietilpību, lai nodrošinātu, ka tas var turēt

vismaz ar minimālās jaudas argumentu norādīto komponentu skaitu.

vienāds () Vienlīdzības labad salīdzina norādīto objektu ar šo vektoru.
pirmais elements() Atgriež šī vektora pirmo komponentu (vienumu ar indeksu 0).
iegūt (indekss) Atgriež elementu norādītajā pozīcijā šajā vektorā.
hashCode() Atgriež šī vektora jaucējkoda vērtību.
indexOf(Object o)

Atgriež norādītā elementa pirmās parādīšanās indeksu šajā vektorā vai -1

ja šis vektors nesatur elementu.

pielāgots izņēmums java
indexOf(Object o, int index) Atgriež norādītā elementa pirmās parādīšanās indeksu šajā vektorā, meklējot uz priekšu no indeksa, vai atgriež -1, ja elements nav atrasts.
insertElementAt(Object o, int index) Ievieto norādīto objektu kā komponentu šajā vektorā norādītajā indeksā.
ir tukšs() Pārbauda, ​​vai šim vektoram nav komponentu.
iterators () Atgriež iteratoru pār šī saraksta elementiem pareizā secībā.
pēdējais elements() Atgriež vektora pēdējo komponentu.
LastIndexOf(Object o)

Atgriež norādītā elementa pēdējās parādīšanās indeksu šajā vektorā jeb -1

Ja šis vektors nesatur elementu.

lastIndexOf(Object o, int index)

Atgriež norādītā elementa pēdējās parādīšanās indeksu šajā vektorā,

meklējot atpakaļ no indeksa, vai atgriež -1, ja elements nav atrasts.

listIterator() Atgriež saraksta iteratoru virs šī saraksta elementiem (pareizā secībā).
listIterator(int index)

Atgriež saraksta iteratoru virs šī saraksta elementiem (pareizā secībā),

sākot no norādītās pozīcijas sarakstā.

noņemt(int indekss) Noņem elementu norādītajā pozīcijā šajā vektorā.
noņemt (Objekts o) Noņem norādītā elementa pirmo reizi šajā vektorā Ja vektors nesatur elementu, tas netiek mainīts.
noņemt visu (c kolekcija) Noņem no šī vektora visus tā elementus, kas atrodas norādītajā kolekcijā.
noņemt visus elementus() Noņem visus komponentus no šī vektora un iestata tā lielumu uz nulli.
noņemt elementu (Object o) No šī vektora noņem argumenta pirmo (zemāko indeksu) gadījumu.
removeElementAt(int index) Dzēš komponentu norādītajā indeksā.
RemoveRange(int fromIndex, int toIndex) No šī saraksta tiek noņemti visi elementi, kuru indekss ir starp fromIndex, ieskaitot un toIndex, ekskluzīvs.
paturēt visu (c kolekcija) Saglabā tikai elementus šajā vektorā, kas ir ietverti norādītajā kolekcijā.
kopa (indekss, objekts o) Aizstāj elementu norādītajā pozīcijā šajā vektorā ar norādīto elementu.
setElementAt(Object o, int index) Iestata komponentu šī vektora norādītajā indeksā kā norādīto objektu.
setSize(int newSize) Iestata šī vektora izmēru.
Izmērs() Atgriež šī vektora komponentu skaitu.
apakšsaraksts (int no indeksa, int uz indeksu) Atgriež skatu uz šī saraksta daļu starp fromIndex, ieskaitot un toIndex, ekskluzīvs.
toArray() Atgriež masīvu, kurā ir visi šī vektora elementi pareizā secībā.
toArray(Object []masīvs)

Atgriež masīvu, kurā ir visi šī vektora elementi pareizā secībā; izpildlaiks

atgrieztā masīva tips ir norādītā masīva tips.

toString() Atgriež šī vektora virknes attēlojumu, kas satur katra elementa virknes attēlojumu.
apgriezt izmēru() Apgriež šī vektora kapacitāti līdz vektora pašreizējam izmēram.

Dodiet priekšroku lietošanai Par ko virs Stack -:

Java klase Stack ir mantota klase un tiek mantota no Vektors Java valodā . Tā ir vītnes droša klase, un tāpēc tā ir saistīta ar pieskaitāmajām izmaksām, ja mums nav nepieciešama vītnes drošība. Ieteicams lietot ArrayDeque steka ieviešanai, jo tā ir efektīvāka viena pavediena vidē.

Java




// A Java Program to show implementation> // of Stack using ArrayDeque> import> java.util.*;> class> GFG {> >public> static> void> main (String[] args) {> >Deque stack =>new> ArrayDeque();> >stack.push(>'A'>);> >stack.push(>'B'>);> >System.out.println(stack.peek());> >System.out.println(stack.pop());> >}> }>

>

>

Izvade:

B B>

Vēl viens iemesls, lai izmantotu Deque, nevis Stack, ir tas, ka Deque var izmantot straumes, lai pārveidotu par sarakstu, saglabājot LIFO koncepciju, kamēr Stack to nedara.

Java




import> java.util.*;> import> java.util.stream.Collectors;> class> GFG {> >public> static> void> main (String[] args) {> > >Stack stack =>new> Stack();> >Deque deque =>new> ArrayDeque();> >stack.push(>1>);>//1 is the top> >deque.push(>1>);>//1 is the top> >stack.push(>2>);>//2 is the top> >deque.push(>2>);>//2 is the top> >List list1 = stack.stream().collect(Collectors.toList());>//[1,2]> >System.out.println(>'Using Stack -'>);> >for>(>int> i =>0>; i System.out.print(list1.get(i) + ' ' ); } System.out.println(); List list2 = deque.stream().collect(Collectors.toList());//[2,1] System.out.println('Using Deque -'); for(int i = 0; i System.out.print(list2.get(i) + ' ' ); } System.out.println(); } }>

>

>

Izvade

Using Stack - 1 2 Using Deque - 2 1>