logo

Stack Class Java

Java Kolekcijos sistema suteikia Stack klasę, kuri modeliuoja ir įgyvendina a Žemiau esančioje diagramoje parodyta Stack klasės hierarchija :

Stack Class Java



Klasė palaiko vieną numatytasis konstruktorius Stack () kuri yra įpratusi sukurti tuščią krūvą .

Deklaracija:

public class Stack extends Vector>

Visos įdiegtos sąsajos:

Kaip sukurti krūvą?

Norėdami sukurti krūvą, turime importuoti java.util.stack paketą ir naudokite šios klasės konstruktorių Stack(). Toliau pateiktame pavyzdyje sukuriamas tuščias kaminas.

Stack stack = new Stack();

Čia E yra objekto tipas.

Pavyzdys:

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>);> >}> }>

kiek mb viename GB

>

>

Išvestis:

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

Įvairių operacijų atlikimas Stack klasėje

1. Elementų pridėjimas: Norėdami pridėti elementą į krūvą, galime naudoti push() metodas . Tai stumti () operaciją padėkite elementą kamino viršuje.

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);> >}> }>

>

>

Išvestis:

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

2. Prieiga prie elemento: Norėdami nuskaityti arba gauti pirmąjį krūvos elementą arba elementą, esantį krūvos viršuje, galime naudoti žvilgtelėti () metodas. Gautas elementas nėra ištrinamas arba pašalinamas iš kamino.

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);> >}> }>

langas.atidaryti javascript

>

>

Išvestis:

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. Elementų pašalinimas: Norėdami iškelti elementą iš krūvos, galime naudoti pop () metodas. Elementas iššokamas iš kamino viršaus ir pašalinamas iš to paties.

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);> >}> }>

>

>

Išvestis:

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

Pavyzdys

„Java“ kalboje „Stack“ klasė yra „Vector“ klasės poklasis ir reiškia „paskutinis pirmas iš pradžių“ (LIFO) objektų krūvą. Jis praplečia Vector klasę, kad būtų galima lengvai įgyvendinti kamino duomenų struktūrą.

Štai pavyzdys, kaip galite naudoti „Java“ klasę „Stack“:

Java




java tipo konvertavimas ir liejimas

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());> >}> >}> }>

>

>

Išvestis

4 3 2 1>

Šiame pavyzdyje pirmiausia importuojame Stack klasę iš java.util paketo. Tada mes sukuriame naują Stack objektą, vadinamą stack, naudodami numatytąjį konstruktorių. Mes įstumiame keturis sveikuosius skaičius į krūvą naudodami push() metodą. Tada mes iškeliame elementus iš krūvos naudodami pop() metodą tam tikroje ciklo dalyje. Metodas isEmpty() naudojamas patikrinti, ar krūva tuščia prieš bandant iškelti elementą.

Šis kodas sukuria sveikųjų skaičių krūvą ir 4 sveikuosius skaičius įstumia į krūvą tokia tvarka: 1 -> 2 -> 3 -> 4. Tada po vieną iškeliame elementus iš krūvos naudodami pop() metodą, kuris pašalina ir grąžina viršutinis kamino elementas. Kadangi dėklas yra paskutinis pirmas išeinantis (LIFO), elementai iššokami atvirkštine įterpimo tvarka, todėl gaunama aukščiau pateikta išvestis.

„Stack“ klasėje pateikiami keli kiti metodai, skirti manipuliuoti stekeliu, pvz., „peek()“ norint gauti viršutinį elementą jo nepašalinant, „Search()“ norint ieškoti elemento krūvoje ir grąžinti jo vietą, ir „size()“ norint grąžinti dabartinį elementą. kamino dydis. Stack klasėje taip pat pateikiami keli konstruktoriai, skirti sukurti tam tikros pradinės talpos krūvą arba nukopijuoti esamą krūvą.

Metodai „Stack“ klasėje

METODAS

APIBŪDINIMAS

tuščia()

Grąžinama tiesa, jei nieko nėra krūvos viršuje. Priešingu atveju grąžinama klaidinga.

žvilgtelėti ()

Grąžina elementą krūvos viršuje, bet jo nepašalina.

pop ()

Pašalina ir grąžina viršutinį krūvos elementą. „EmptyStackException“

Išimtis daroma, jei iškviečiame pop(), kai iškvietimo krūva yra tuščia.

stumti (objekto elementas)

Pastumia elementą krūvos viršuje.

paieška (objekto elementas)

Jis nustato, ar krūvoje yra objektas. Jei elementas rastas,

Jis grąžina elemento padėtį iš krūvos viršaus. Priešingu atveju jis grąžina -1.

Metodai, paveldėti iš klasės java.util.Vector

METODAS

APIBŪDINIMAS

pridėti (objekto objektas) Prideda nurodytą elementą šio vektoriaus pabaigoje.
add(int index, Object Obj) Įterpia nurodytą elementą nurodytoje šio vektoriaus vietoje.
pridėti viską (rinkinys c)

Prideda visus nurodytos kolekcijos elementus prie šio vektoriaus pabaigos,

tokia tvarka, kaip juos grąžina nurodytos kolekcijos iteratorius.

pridėti viską (int indeksas, rinkinys c) Įterpia visus nurodytos kolekcijos elementus į šį vektorių nurodytoje vietoje.
addElement (O objektas) Prideda nurodytą komponentą prie šio vektoriaus pabaigos, padidindamas jo dydį vienu.
talpa () Grąžina esamą šio vektoriaus talpą.
aišku () Pašalina visus elementus iš šio vektoriaus.
klonas () Grąžina šio vektoriaus kloną.
yra (O objektas) Grąžina true, jei šiame vektoriuje yra nurodytas elementas.
yra viskas (rinkinys c) Grąžina teisinga, jei šiame vektoriuje yra visi nurodytos kolekcijos elementai.
copyInto (objektų [] masyvas) Nukopijuoja šio vektoriaus komponentus į nurodytą masyvą.
elementAt(int index) Grąžina nurodyto indekso komponentą.
elementai () Pateikia šio vektoriaus komponentų sąrašą.
užtikrintiCapacity (int minCapacity)

Jei reikia, padidina šio vektoriaus talpą, kad užtikrintų, jog jis gali tilpti

bent komponentų skaičius, nurodytas minimalios talpos argumentu.

lygus () Lyginant nurodytą objektą su šiuo vektoriumi.
pirmasis elementas () Grąžina pirmąjį šio vektoriaus komponentą (0 indekso elementą).
gauti (int index) Grąžina elementą nurodytoje šio vektoriaus vietoje.
maišos kodas () Grąžina maišos kodo reikšmę šiam vektoriui.
indexOf (O objektas)

Grąžina pirmojo nurodyto elemento pasireiškimo šiame vektoriuje indeksą arba -1

jei šiame vektoriuje nėra elemento.

indexOf (O objektas, tarpinis indeksas) Grąžina pirmojo nurodyto elemento pasireiškimo šiame vektoriuje indeksą, ieškant pirmyn iš indekso, arba grąžina -1, jei elementas nerastas.
insertElementAt(Object o, int index) Įterpia nurodytą objektą kaip šio vektoriaus komponentą nurodytu indeksu.
Yra tuščias() Tikrina, ar šis vektorius neturi komponentų.
iteratorius () Tinkama seka pateikia šio sąrašo elementų iteratorių.
paskutinis elementas () Grąžina paskutinį vektoriaus komponentą.
paskutinis indeksas (O objektas)

Grąžina paskutinio nurodyto elemento pasireiškimo šiame vektoriuje indeksą arba -1

Jei šiame vektoriuje nėra elemento.

lastIndexOf (O objektas, tarpinis indeksas)

Grąžina paskutinio nurodyto elemento pasireiškimo šiame vektoriuje indeksą,

ieškant atgal iš indekso arba grąžinama -1, jei elementas nerastas.

listIterator() Pateikia sąrašo iteratorių virš šio sąrašo elementų (tinkama seka).
listIterator(int index)

Grąžina sąrašo iteratorių virš šio sąrašo elementų (tinkama seka),

pradedant nuo nurodytos sąrašo vietos.

pašalinti (int index) Pašalina elementą nurodytoje šio vektoriaus vietoje.
pašalinti (O objektas) Pašalina pirmąjį nurodyto elemento atvejį šiame vektoryje. Jei vektoriuje elemento nėra, jis nesikeičia.
pašalinti viską (rinkinys c) Pašalina iš šio vektoriaus visus jo elementus, esančius nurodytoje kolekcijoje.
pašalinti visus elementus () Pašalina visus komponentus iš šio vektoriaus ir nustato jo dydį į nulį.
pašalinti elementą (O objektas) Iš šio vektoriaus pašalinamas pirmasis (mažiausiai indeksuotas) argumento įvykis.
RemoveElementAt(int index) Ištrina nurodyto indekso komponentą.
pašalinti diapazoną (int fromIndex, int toIndex) Iš šio sąrašo pašalinami visi elementai, kurių indeksas yra tarp fromIndex, inclusive ir toIndex, išskirtinis.
išlaikyti viską (rinkinys c) Išsaugo tik šio vektoriaus elementus, kurie yra nurodytoje kolekcijoje.
rinkinys (indeksas, objektas o) Pakeičia elementą nurodytoje šio vektoriaus vietoje nurodytu elementu.
setElementAt(Object o, int index) Nustato komponentą, esantį nurodytoje šio vektoriaus indekse, kaip nurodytą objektą.
setSize (int new Size) Nustato šio vektoriaus dydį.
dydis () Grąžina šio vektoriaus komponentų skaičių.
posąrašas (int fromIndex, int toIndex) Grąžina šio sąrašo dalies tarp fromIndex, imtinai ir toIndex, išskirtinį vaizdą.
toArray () Grąžina masyvą, kuriame yra visi šio vektoriaus elementai teisinga tvarka.
toArray (objektų [] masyvas)

Grąžina masyvą, kuriame yra visi šio vektoriaus elementai teisinga tvarka; vykdymo laikas

grąžinamo masyvo tipas yra nurodyto masyvo tipas.

toString() Grąžina šio vektoriaus eilutės atvaizdavimą, kuriame yra kiekvieno elemento eilutė.
apkarpyti dydį() Sumažina šio vektoriaus talpą iki dabartinio vektoriaus dydžio.

Pirmenybę teikite naudojimui Apie ką virš Stack -:

„Java“ „Stack“ klasė yra senoji klasė ir paveldima iš Vektorius Java . Tai yra siūlams saugi klasė, taigi, kai mums nereikia siūlų saugos, reikia papildomų išlaidų. Rekomenduojama naudoti ArrayDeque kamino diegimui, nes jis yra efektyvesnis vienos gijos aplinkoje.

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());> >}> }>

>

>

Išvestis:

B B>

Dar viena priežastis, kodėl verta naudoti „Deque“, o ne „Stack“, yra ta, kad „Deque“ turi galimybę naudoti srautus konvertuoti į sąrašą išlaikant LIFO koncepciją, o „Stack“ ne.

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(); } }>

sql kelių lentelių pasirinkimas

>

>

Išvestis

Using Stack - 1 2 Using Deque - 2 1>