Java Stack -luokka laajentaa Vector-luokkaa. Sen avulla voit luoda uusia elementtejä, tarkastella pinossa olevaa elementtiä, päivittää pinossa olevaa elementtiä ja poistaa kaikki elementit pinosta. Pinoaa prosessitiedot FILO-järjestyksessä (first-in-last-out). Tämä tarkoittaa, että voit lisätä tai poistaa kohteita vain pinon yläosasta.
Pinotietorakenteessa on viisi ensisijaista menetelmää. Java Stack -luokassa on kuitenkin myös pääsy yli 40 muuhun menetelmään, jotka se perii Vector-luokasta.
Pinon luominen Javassa
Stack-luokka on yksi rakentaja jonka avulla voit luoda tyhjän pinon. Jokaisella pinolla on tyyppiargumentti, joka määrää, minkä tyyppistä dataa se tallentaa.
tuonti java.util. Pino;
julkinenluokkaaMain{
julkinenstaattinenmitätönpää(merkkijono[] args){
// luo pinon
PinoAsiakkaat = Uusi Pino ();
}
}
Yllä oleva koodi luo pinotietorakenteen nimeltä Asiakkaat joka tallentaa merkkijonoarvot.
Pinon täyttäminen
Yksi Stack-luokan viidestä ensisijaisesta menetelmästä on työntää() menetelmä. Se ottaa yhden kohteen, jolla on sama tietotyyppi kuin pinolla, ja työntää sen pinon yläosaan.
// täyttää pinon
Customers.push("Jane Doe");
Customers.push("John Doe");
Customers.push("Patrick Williams");
Asiakkaat.push("Paul Smith");
Customers.push("Erick Rowe");
Asiakkaat.push("Ella Jones");
Customers.push("Jessica Brown");
Yllä oleva koodi täyttää asiakkaiden pinon seitsemällä tuotteella. Se työntää jokaisen uuden kohteen pinon yläosaan. Joten asiakaspinon yläosassa oleva kohde on Jessica Brown. Ja voit vahvistaa tämän käyttämällä pinoa kurkistaa() menetelmä. The kurkistaa() menetelmä ei vaadi argumentteja. Se palauttaa pinon yläosassa olevan objektin poistamatta sitä.
// tarkastele objektia pinon yläosassa
System.out.println (Customers.peek());
Yllä oleva koodi palauttaa seuraavan tulosteen konsoliin:
Jessica Brown
Tarkastele kohteita pinossa
Pinotietorakenne on melko rajoittava sen suhteen, miten sen avulla voit olla vuorovaikutuksessa sen tietojen kanssa. Sinun tulisi käyttää pinoa pääasiassa sen ylimmän kohteen kautta. Voit kuitenkin käyttää myös Vector-luokasta perittyjä menetelmiä mielivaltaisten elementtien käyttämiseen. Tällaisia menetelmiä ovat elementAt ja removeElementAt.
Helpoin tapa saada yleiskuva pinon sisällöstä on yksinkertaisesti tulostaa se. Välitä pinoobjekti System.out.println ja Stackin toString()-metodi tuottaa mukavan yhteenvedon:
// tarkastella pinon kaikkia elementtejä
System.out.println (asiakkaat);
Yllä oleva koodi tulostaa seuraavan tulosteen konsoliin:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]
Nimikkeen paikan etsiminen pinosta
Jos tiedät pinossa olevan kohteen, voit tunnistaa sen indeksipaikan tai sen sijainnin pinon yläosaan nähden. The sisällysluettelo() menetelmä ottaa kohteen pinossa ja palauttaa sen indeksipaikan. Muista, että pino alkaa indeksoida kohteita nollasta.
// Etsi nimikkeen hakemistosijainti
System.out.println (Customers.indexOf("Jane Doe"));
Yllä oleva koodi tulostaa seuraavan tulosteen konsoliin:
0
The Hae() menetelmä on yksi Stack-luokan ensisijaisista menetelmistä. Se palauttaa nimikkeen sijainnin suhteessa pinon yläosaan, jossa pinon yläosassa olevalla kohteella on paikka numero yksi.
System.out.println (Customers.search("Jane Doe"));
Yllä oleva koodi tulostaa seuraavan tulosteen konsoliin:
7
Jos toimitat Hae() tai sisällysluettelo() -menetelmiä, joiden nimike ei ole pinossa, ne palauttavat negatiivisen.
System.out.println (Customers.search("Elsa Doe"));
System.out.println (Customers.indexOf("Elsa Doe"));
Yllä oleva koodi tulostaa seuraavan tulosteen konsoliin:
-1
-1
Pinon kohteiden päivittäminen
Voit käsitellä vain pinon yläosassa olevaa kohdetta. Joten jos haluat päivittää elementin, joka ei ole pinon yläosassa, sinun on nostettava kaikki kohteet sen yläpuolelle. The pop() menetelmä on yksi pinon päämenetelmistä. The pop() menetelmä ei vaadi argumentteja. Se poistaa pinon yläosassa olevan kohteen ja palauttaa sen.
// Päivitä objekti
Asiakkaat.pop();
Asiakkaat.pop();
Asiakkaat.push("Ella James");
Customers.push("Jessica Brown");
System.out.println (asiakkaat);
Yllä oleva koodi tulostaa seuraavan tulosteen konsoliin:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]
Kuten tulosteesta näkyy, koodi päivittää Ellan sukunimen Jamesiksi. Se sisältää prosessin, joka ponnahtaa kohteita pinosta, kunnes saavut kohdeobjektiin. Sitten se ponnahtaa kohdeobjektin; päivittää sen; ja työntää sen yhdessä kohteen päällä olevien kohteiden kanssa takaisin pinoon. Sinun on käytettävä ohjelmaa, joka suorittaa yllä olevan kaltaisia toimintoja aina, kun haluat päivittää kohteen pinossasi.
Kohteen poistaminen pinosta
Jos haluat poistaa yksittäisen kohteen pinotietorakenteesta, voit käyttää uudelleen pop()-menetelmää. Jos poistettava kohde ei ole ylhäällä, voit nostaa kohteita ylhäällä, kunnes saavutat haluamasi kohteen.
Kaikkien pinon kohteiden poistaminen
Voit poistaa kaikki elementit pinosta käyttämällä a Java while-silmukka pop()-menetelmällä elementtien poistamiseksi yksi kerrallaan. Tehokkaampi tapa on kuitenkin käyttää asia selvä() menetelmä. The asia selvä() menetelmä on sellainen, jonka Stack-luokka perii Vector-luokasta. Se ei ota argumentteja, ei palauta mitään, vaan yksinkertaisesti poistaa kaikki pinotietorakenteen elementit.
// poistaa kaikki pinon kohteet
Asiakkaat.clear();
System.out.println (Customers.empty());
Yllä oleva koodi poistaa kaikki asiakaspinon tuotteet. Sitten se käyttää tyhjä() tapa tarkistaa, onko pino tyhjä. The tyhjä() on toinen Java-pinoluokan ensisijainen menetelmä. Se ei käytä argumentteja ja palauttaa Boolen arvon. Tämä menetelmä palauttaa tosi, jos pino on tyhjä, ja false muuten.
Yllä oleva koodi tulostaa seuraavan tulosteen konsoliin:
totta
Käytännön sovelluksia pinotietorakenteelle
Pinotietorakenne on hyvin rajoittava. Se ei tarjoa yhtä paljon joustavuutta tietojenkäsittelyssä kuin muut tietorakenteet. Tämä herättää kysymyksen: milloin sinun pitäisi käyttää Stack-tietorakennetta?
Stack-tietorakenne sopii erinomaisesti sovelluksiin, jotka vaativat tietojen käsittelyä käänteisessä järjestyksessä. Nämä sisältävät:
- Sovellus, joka tarkistaa, onko sana palindromi.
- Sovellus, joka muuntaa desimaaliluvut binääriluvuiksi.
- Sovellukset, joiden avulla käyttäjät voivat kumota.
- Pelit, joissa käyttäjä voi palata aikaisempiin liikkeisiin, kuten shakkipeli.