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

Klasė palaiko vieną numatytasis konstruktorius Stack () kuri yra įpratusi sukurti tuščią krūvą .
Deklaracija:
public class Stack extends Vector>
Visos įdiegtos sąsajos:
- Serializuojama: Tai žymeklio sąsaja, kurią klasės turi įdiegti, jei norima serializuoti ir deserializuoti.
- Klonuojamas: Tai yra „Java“ sąsaja, kurią turi įdiegti klasė, kad būtų galima klonuoti jos objektus.
- Pakartojama: Ši sąsaja reprezentuoja objektų rinkinį, kurį galima kartoti – prasmę, kurią galima kartoti.
- Kolekcija: Kolekcija reiškia objektų grupę, žinomą kaip jos elementai. Kolekcijos sąsaja naudojama perduoti objektų kolekcijas, kuriose norima maksimalaus bendrumo.
- Sąrašas: List sąsaja suteikia galimybę saugoti užsakytą kolekciją. Tai vaikų kolekcijos sąsaja.
- Atsitiktinė prieiga: Tai žymeklio sąsaja, kurią naudoja sąrašo diegimai, nurodantys, kad jie palaiko greitą (paprastai pastovaus laiko) atsitiktinę prieigą.
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>