logo

Java-pino

The pino on lineaarinen tietorakenne, jota käytetään objektikokoelman tallentamiseen. Se perustuu Viimeisenä sisään ensimmäisenä ulos (LIFO). Java kokoelma Framework tarjoaa monia rajapintoja ja luokkia objektikokoelman tallentamiseen. Yksi niistä on Pinoluokka joka tarjoaa erilaisia ​​toimintoja, kuten push, pop, search jne.

Tässä osiossa keskustelemme Java Stack -luokka , sen menetelmät, ja toteuttaa pinon tietorakenne kohdassa a Java ohjelma . Mutta ennen kuin siirryt Java Stack -luokkaan, tutustu nopeasti pinon toimintaan.

Pinotietorakenteessa on kaksi tärkeintä toimintoa työntää ja pop . Push-toiminto lisää elementin pinoon ja pop-toiminto poistaa elementin pinon yläosasta. Katsotaan kuinka ne toimivat pinossa.

Java-pino

Työnnetään pinoon vastaavasti 20, 13, 89, 90, 11, 45, 18.

Java-pino

Poistetaan (pop) 18, 45 ja 11 pinosta.

Java-pino

Tyhjä pino: Jos pinossa ei ole elementtiä, sitä kutsutaan nimellä an tyhjä pino . Kun pino on tyhjä, ylimmän muuttujan arvo on -1.

jos muuten javassa
Java-pino

Kun työnnämme elementin pinoon, yläosa on kasvoi 1 . Seuraavassa kuvassa

  • Työnnä 12, yläosa = 0
  • Työntö 6, ylhäältä = 1
  • Työnnä 9, ylhäältä = 2
Java-pino

Kun nostamme elementin pinosta, arvo top on laski 1 . Seuraavassa kuvassa olemme ponnahtaneet 9.

Java-pino

Seuraavassa taulukossa näkyvät yläosan eri arvot.

Java-pino

Java-pinoluokka

Javalla, Pino on luokka, joka kuuluu Collection-kehykseen, joka laajentaa Vektori luokkaa. Se toteuttaa myös rajapintoja Luettelo, kokoelma, iteroitava, kloonattava, sarjoitettava. Se edustaa LIFO-objektien pinoa. Ennen kuin käytämme Stack-luokkaa, meidän on tuotavajava.utilpaketti. Pinoluokka on järjestetty Kokoelmat-kehyksen hierarkiaan alla olevan kuvan mukaisesti.

Java-pino

Pinoluokan rakentaja

Stack-luokka sisältää vain oletuskonstruktori joka luo tyhjän pinon.

 public Stack() 

Pinon luominen

Jos haluamme luoda pinon, tuo ensinjava.utilpaketti ja luo Stack-luokan objekti.

 Stack stk = new Stack(); 

Tai

 Stack stk = new Stack(); 

Missä tyyppi tarkoittaa pinon tyyppiä, kuten kokonaisluku, merkkijono jne.

Pinoluokan menetelmät

Voimme suorittaa pinossa push-, pop-, peek- ja hakutoimintoja. Java Stack -luokka tarjoaa pääasiassa viisi menetelmää näiden toimintojen suorittamiseen. Tämän lisäksi se tarjoaa myös kaikki menetelmät Java Vector -luokka .

Menetelmä Muokkaus ja tyyppi Menetelmän kuvaus
tyhjä() boolean Menetelmä tarkistaa, onko pino tyhjä vai ei.
push (E-tuote) JA Menetelmä työntää (lisää) elementin pinon yläosaan.
pop() JA Menetelmä poistaa elementin pinon yläosasta ja palauttaa saman elementin kuin kyseisen funktion arvo.
kurkistaa() JA Menetelmä tarkastelee pinon ylintä elementtiä poistamatta sitä.
haku (objekti o) int Menetelmä etsii määritetyn objektin ja palauttaa objektin sijainnin.

Pinoluokka tyhjä() -menetelmä

The tyhjä() Stack-luokan menetelmä tarkistaa, onko pino tyhjä vai ei. Jos pino on tyhjä, se palauttaa tosi, muussa tapauksessa false. Voimme myös käyttää Vector-luokan isEmpty()-metodia.

Syntaksi

 public boolean empty() 

Palautukset: Metodi palauttaa true, jos pino on tyhjä, muussa tapauksessa palauttaa false.

Seuraavassa esimerkissä olemme luoneet Stack-luokan esiintymän. Sen jälkeen olemme käyttäneet tyhjä()-metodia kaksi kertaa. Ensimmäistä kertaa se palaa totta koska emme ole työntäneet mitään elementtiä pinoon. Sen jälkeen olemme työntäneet elementit pinoon. Jälleen olemme käyttäneet tyhjä()-metodia, joka palauttaa väärä koska pino ei ole tyhjä.

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

Lähtö:

 Is the stack empty? true Elements in Stack: [78, 113, 90, 120] Is the stack empty? false 

Pinoluokan push() -menetelmä

Menetelmä lisää kohteen pinon yläosaan. Se toimii samalla tavalla kuin Vector-luokan metodi addElement(item). Se välittää parametrin kohde työnnettäväksi pinoon.

Syntaksi

 public E push(E item) 

Parametri: Tavara, joka työnnetään pinon päälle.

Palautukset: Metodi palauttaa argumentin, jonka olemme hyväksyneet parametrina.

git-komennot pushille

Pinoluokka pop() -menetelmä

Menetelmä poistaa pinon yläosassa olevan objektin ja palauttaa saman objektin. Se heittää EmptyStackException jos pino on tyhjä.

Syntaksi

 public E pop() 

Palautukset: Se palauttaa objektin, joka on pinon yläosassa.

Toteutetaan pino Java-ohjelmaan ja tehdään push- ja pop-operaatioita.

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

Lähtö:

 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] 

Pinoluokka peek() -menetelmä

Se tarkastelee elementtiä, joka on pinon yläosassa. Se myös heittää EmptyStackException jos pino on tyhjä.

Syntaksi

 public E peek() 

Palautukset: Se palauttaa pinon ylimmät elementit.

Katsotaanpa esimerkki peek()-menetelmästä.

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

Lähtö:

 Stack: [Apple, Grapes, Mango, Orange] Element at the top of the stack: Orange 

Menetelmä etsii pinon objektia ylhäältä. Se jäsentää parametrin, jota haluamme etsiä. Se palauttaa pinon objektin 1-perusteisen sijainnin. Pinon ylintä kohdetta tarkastellaan etäisyydellä 1.

Oletetaan, että o on pinossa oleva objekti, jota haluamme etsiä. Menetelmä palauttaa pinon yläosaa lähinnä olevan esiintymän etäisyyden pinon yläosasta. Se käyttää on yhtä suuri () menetelmä pinon kohteen etsimiseen.

Syntaksi

 public int search(Object o) 

Parametri: o on haluttu haettava kohde.

Palautukset: Se palauttaa objektin sijainnin pinon yläosasta. Jos se palauttaa -1, se tarkoittaa, että objekti ei ole pinossa.

Katsotaanpa esimerkki haku()-menetelmästä.

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-pinotoiminnot

Pinon koko

Voimme myös selvittää pinon koon Vector-luokan size()-metodilla. Se palauttaa pinon elementtien kokonaismäärän (pinon koon).

Syntaksi

 public int size() 

Katsotaanpa esimerkki Vector-luokan size()-metodista.

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

Lähtö:

 Is the stack empty or not? false The stack size is: 5 

Iteroi elementtejä

Iterointi tarkoittaa pinon elementtien hakemista. Voimme hakea pinon elementtejä kolmella eri menetelmällä, jotka ovat seuraavat:

  • Käyttämällä iteraattori() Menetelmä
  • Käyttämällä jokaiselle() Menetelmä
  • Käyttämällä listIterator() Menetelmä

Iterator()-menetelmän käyttäminen

Se on Iterator-rajapinnan menetelmä. Se palauttaa iteraattorin pinon elementtien päälle. Ennen kuin käytät iterator()-menetelmää, tuojava.util.Iteratorpaketti.

Syntaksi

 Iterator iterator() 

Suoritetaan iteraatio pinon yli.

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

Lähtö:

 BMW Audi Ferrari Bugatti Jaguar 

ForEach()-menetelmän käyttäminen

Java tarjoaa forEach()-menetelmän elementtien iterointiin. Menetelmä on määritelty kohdassa Iteroitavissa ja Striimaa käyttöliittymä.

java sisältää alimerkkijonon

Syntaksi

 default void forEach(Consumeraction) 

Iteroidaan pinon yli käyttämällä forEach()-metodia.

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

Lähtö:

 Iteration over the stack using forEach() Method: 119 203 988 

ListIterator()-menetelmän käyttäminen

Tämä menetelmä palauttaa listaiteraattorin mainitun listan elementtien päälle (peräkkäin), alkaen määritetystä kohdasta luettelossa. Se toistaa pinon ylhäältä alas.

Syntaksi

 ListIterator listIterator(int index) 

Parametri: Menetelmä jäsentää parametrin nimeltä indeksi.

Palautukset: Tämä menetelmä palauttaa luetteloiteraattorin elementtien päälle järjestyksessä.

Poikkeus: Se heittää IndexOutOfBoundsException jos indeksi on alueen ulkopuolella.

Iteroidaan pinon yli käyttämällä listIterator()-metodia.

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

Lähtö:

 Iteration over the Stack from top to bottom: 988 203 119