logo

Pinoluokka Javassa

Java Keräyskehys tarjoaa pinoluokan, joka mallintaa ja toteuttaa a Alla oleva kaavio näyttää Stack-luokan hierarkia :

Pinoluokka Javassa



Luokka tukee yhtä oletuskonstruktori Pino() johon on tottunut luo tyhjä pino .

Ilmoitus:

public class Stack extends Vector>

Kaikki toteutetut käyttöliittymät:

Kuinka luoda pino?

Pinon luomiseksi meidän on tuotava java.util.stack paketti ja käytä tämän luokan Stack()-konstruktoria. Alla oleva esimerkki luo tyhjän pinon.

Pino pino = new Pino();

Tässä E on objektin tyyppi.

Esimerkki:

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

muuntaa java-objektin json-muotoon

>

>

Lähtö:

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

Erilaisten toimintojen suorittaminen Stack-luokassa

1. Elementtien lisääminen: Elementin lisäämiseksi pinoon voimme käyttää push() -menetelmä . Tämä työntää() Aseta elementti pinon yläosaan.

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

>

>

Lähtö:

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

2. Elementin käyttö: Pinon ensimmäisen elementin tai pinon yläosassa olevan elementin hakemiseksi tai hakemiseksi voimme käyttää kurkistaa() menetelmä. Haettua elementtiä ei poisteta tai poisteta pinosta.

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

sql-tietotyypit

>

>

Lähtö:

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. Elementtien poistaminen: Voit nostaa elementin pinosta käyttämällä pop() menetelmä. Elementti pompataan pinon yläosasta ja poistetaan siitä.

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

>

>

Lähtö:

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

Esimerkki

Javassa Pino-luokka on Vector-luokan alaluokka ja edustaa LIFO-pinoa (last-in-first out). Se laajentaa Vector-luokkaa mahdollistaakseen pinon tietorakenteen helpon toteuttamisen.

Tässä on esimerkki kuinka voit käyttää Stack-luokkaa Javassa:

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

>

>

Lähtö

4 3 2 1>

Tässä esimerkissä tuomme ensin Stack-luokan java.util-paketista. Luomme sitten uuden pino-objektin nimeltä pino käyttämällä oletuskonstruktoria. Työnämme neljä kokonaislukua pinoon push()-menetelmällä. Sitten ponnaamme elementit pinosta pop()-menetelmällä while-silmukan sisään. Metodia isEmpty() käytetään tarkistamaan, onko pino tyhjä, ennen kuin yritetään ponnahtaa elementtiä.

Tämä koodi luo pinon kokonaislukuja ja työntää pinoon 4 kokonaislukua järjestyksessä 1 -> 2 -> 3 -> 4. Poppaamme sitten elementtejä pinosta yksitellen pop()-menetelmällä, joka poistaa ja palauttaa pinon ylin elementti. Koska pino noudattaa LIFO (last-in-first-out) -järjestystä, elementit ponnataan päinvastaisessa lisäysjärjestyksessä, mikä johtaa yllä näkyvään tulosteeseen.

Pino-luokka tarjoaa useita muita tapoja käsitellä pinoa, kuten peek() hakea ylimmän elementin poistamatta sitä, search() etsiäksesi elementin pinosta ja palauttaa sen sijainnin ja size() palauttaaksesi nykyisen pinon kokoa. Pinoluokka tarjoaa myös useita rakentajia, joilla luodaan pino tietyllä alkukapasiteetilla tai kopioidaan olemassa oleva pino.

Pinoluokan menetelmät

MENETELMÄ

KUVAUS

tyhjä()

Se palauttaa tosi, jos mitään ei ole pinon päällä. Muuten palauttaa vääriä.

kurkistaa()

Palauttaa pinon päällä olevan elementin, mutta ei poista sitä.

pop()

Poistaa ja palauttaa pinon yläosan. 'EmptyStackException'

Poikkeus syntyy, jos kutsumme pop():a, kun kutsupino on tyhjä.

push (objektielementti)

Työntää elementin pinon päälle.

haku (objektielementti)

Se määrittää, onko pinossa objekti. Jos elementti löytyy,

Se palauttaa elementin sijainnin pinon yläosasta. Muuten se palauttaa -1.

Luokasta java.util.Vector periytyneet menetelmät

MENETELMÄ

KUVAUS

lisää(Objektiobjekti) Liittää määritetyn elementin tämän vektorin loppuun.
add(int index, Object Obj) Lisää määritetyn elementin määritettyyn kohtaan tässä vektorissa.
lisää kaikki (kokoelma c)

Liittää kaikki määritetyn kokoelman elementit tämän vektorin loppuun,

järjestyksessä, jossa määritellyn kokoelman iteraattori palauttaa ne.

addAll(int index, kokoelma c) Lisää kaikki määritetyn kokoelman elementit tähän vektoriin määritettyyn kohtaan.
addElement(Object o) Lisää määritetyn komponentin tämän vektorin loppuun ja lisää sen kokoa yhdellä.
kapasiteetti () Palauttaa tämän vektorin nykyisen kapasiteetin.
asia selvä() Poistaa kaikki elementit tästä vektorista.
klooni() Palauttaa tämän vektorin kloonin.
sisältää (objekti o) Palauttaa tosi, jos tämä vektori sisältää määritetyn elementin.
sisältääKaikki (kokoelma c) Palauttaa tosi, jos tämä vektori sisältää kaikki määritetyn kokoelman elementit.
copyInto(Objekti []taulukko) Kopioi tämän vektorin komponentit määritettyyn taulukkoon.
elementAt(int-indeksi) Palauttaa määritetyn indeksin komponentin.
elementit() Palauttaa luettelon tämän vektorin komponenteista.
varmista Kapasiteetti (int minCapacity)

Lisää tämän vektorin kapasiteettia tarvittaessa varmistaakseen, että se kestää

ketjutusmerkkijono javassa

vähintään vähimmäiskapasiteettiargumentin määrittelemä määrä komponentteja.

on yhtä suuri () Vertaa määritettyä objektia tähän vektoriin tasa-arvon saamiseksi.
firstElement() Palauttaa tämän vektorin ensimmäisen komponentin (kohteen indeksissä 0).
get(int index) Palauttaa elementin määritetyssä paikassa tässä vektorissa.
hash koodin() Palauttaa tämän vektorin hash-koodin arvon.
indexOf(Object o)

Palauttaa tässä vektorissa määritetyn elementin ensimmäisen esiintymisen indeksin tai -1

jos tämä vektori ei sisällä elementtiä.

indexOf(objekti o, int indeksi) Palauttaa indeksin määritetyn elementin ensimmäisestä esiintymisestä tässä vektorissa, etsien eteenpäin indeksistä, tai palauttaa -1, jos elementtiä ei löydy.
insertElementAt(Object o, int index) Lisää määritetyn objektin tämän vektorin komponenttina määritettyyn indeksiin.
on tyhjä() Testaa, onko tällä vektorilla komponentteja.
iteraattori() Palauttaa iteraattorin tämän luettelon elementtien päälle oikeassa järjestyksessä.
viimeinen elementti() Palauttaa vektorin viimeisen komponentin.
lastIndexOf(Object o)

Palauttaa tämän vektorin määritetyn elementin viimeisen esiintymisen indeksin tai -1

Jos tämä vektori ei sisällä elementtiä.

lastIndexOf(Object o, int index)

Palauttaa indeksin määritetyn elementin viimeisestä esiintymisestä tässä vektorissa,

etsii taaksepäin hakemistosta tai palauttaa -1, jos elementtiä ei löydy.

listIterator() Palauttaa luetteloiteraattorin tämän luettelon elementtien päälle (oikeassa järjestyksessä).
listIterator(int index)

Palauttaa luetteloiteraattorin tämän luettelon elementtien päälle (oikeassa järjestyksessä),

alkaen määritetystä kohdasta luettelossa.

poista (int index) Poistaa elementin määritetystä sijainnista tässä vektorissa.
poista (objekti o) Poistaa määritetyn elementin ensimmäisen esiintymän tästä vektorista. Jos vektori ei sisällä elementtiä, se ei muutu.
poista kaikki (kokoelma c) Poistaa tästä vektorista kaikki sen elementit, jotka sisältyvät määritettyyn kokoelmaan.
poistaAllElements() Poistaa kaikki komponentit tästä vektorista ja asettaa sen koon nollaan.
PoistaElement(Object o) Poistaa argumentin ensimmäisen (alhaisimman indeksin) esiintymän tästä vektorista.
poistaElementAt(int index) Poistaa määritetyn hakemiston komponentin.
RemoveRange(int fromIndex, int toIndex) Poistaa tästä luettelosta kaikki elementit, joiden indeksi on välillä fromIndex, inclusive ja toIndex, poissulkeva.
säilyttää kaikki (kokoelma c) Säilyttää vain tämän vektorin elementit, jotka sisältyvät määritettyyn kokoelmaan.
set(int index, Object o) Korvaa tässä vektorissa määritetyssä kohdassa olevan elementin määritetyllä elementillä.
setElementAt(Object o, int index) Asettaa tämän vektorin määritetyn indeksin komponentin määritetyksi objektiksi.
setSize(int newSize) Asettaa tämän vektorin koon.
koko() Palauttaa tämän vektorin komponenttien lukumäärän.
alilista(int fromIndex, int toIndex) Palauttaa näkymän tämän luettelon osasta fromIndex, inclusive ja toIndex, poissulkeva.
toArray() Palauttaa taulukon, joka sisältää kaikki tämän vektorin elementit oikeassa järjestyksessä.
toArray(Object [] array)

Palauttaa taulukon, joka sisältää kaikki tämän vektorin elementit oikeassa järjestyksessä; suoritusaika

palautetun taulukon tyyppi on määritetyn taulukon tyyppi.

toString() Palauttaa tämän vektorin merkkijonoesityksen, joka sisältää kunkin elementin merkkijonoesityksen.
leikkaa kokoon() Leikkaa tämän vektorin kapasiteetin vektorin nykyiseksi kooksi.

Priorisoi käyttö Mistä yli pinon -:

Javan Stack-luokka on vanha luokka ja periytyy Vektori Javassa . Se on lankaturvallinen luokka, ja siksi siihen liittyy lisäkustannuksia, kun emme tarvitse lankaturvallisuutta. On suositeltavaa käyttää ArrayDeque pinon toteuttamiseen, koska se on tehokkaampi yksisäikeisessä ympäristössä.

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

>

>

Lähtö:

B B>

Toinen syy Dequen käyttämiseen Stackin yli on se, että Deque pystyy muuntamaan streamit luetteloiksi säilyttäen LIFO-konseptin, kun taas Stack ei.

Java


kuinka lähettää merkkijono int: hen javassa



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

>

>

Lähtö

Using Stack - 1 2 Using Deque - 2 1>