Java Stack-klassen utvider Vector-klassen. Den lar deg lage nye elementer, se et element i stabelen, oppdatere et element i stabelen og slette alle elementer fra stabelen. Stabler prosessdata i en først-i-sist-ut (FILO) rekkefølge. Dette betyr at du bare kan legge til eller fjerne elementer fra toppen av en stabel.
Stabeldatastrukturen har fem primære metoder. Java Stack-klassen har imidlertid også tilgang til over 40 andre metoder, som den arver fra Vector-klassen.
Opprette en stabel i Java
Stack-klassen har en enkelt konstruktør som lar deg lage en tom stabel. Hver stabel har et typeargument, som dikterer typen data den vil lagre.
import java.util. Stable;
offentligklasseHoved{
offentligstatisktomromhoved-(String[] args){
// lag en stabel
StableKunder = ny Stable ();
}
}
Koden ovenfor oppretter en stabeldatastruktur kalt Kunder som lagrer strengverdier.
Fylle en stabel
En av Stack-klassens fem primære metoder er trykk() metode. Det tar et enkelt element som har samme datatype som stabelen og skyver det elementet til toppen av stabelen.
// fylle ut en stabel
Customers.push("Jane Doe");
Customers.push("John Doe");
Customers.push("Patrick Williams");
Customers.push("Paul Smith");
Customers.push("Erick Rowe");
Customers.push("Ella Jones");
Customers.push("Jessica Brown");
Koden ovenfor fyller kundenes stabel med syv varer. Den skyver hvert nytt element til toppen av stabelen. Så elementet på toppen av kundestabelen er Jessica Brown. Og du kan bekrefte dette ved å bruke stakken kikke() metode. De kikke() metoden tar ingen argumenter. Den returnerer objektet på toppen av stabelen uten å fjerne det.
// se objektet på toppen av en stabel
System.out.println (Customers.peek());
Koden ovenfor returnerer følgende utdata til konsollen:
Jessica Brown
Se varene i en stabel
Stabeldatastrukturen er ganske restriktiv når det gjelder hvordan den lar deg samhandle med dataene. Du bør hovedsakelig bruke en stabel via det øverste elementet. Du kan imidlertid også bruke metoder som er arvet fra Vector-klassen for å få tilgang til vilkårlige elementer. Slike metoder inkluderer elementAt og removeElementAt.
Den enkleste måten å få en oversikt over innholdet i en stabel på er ganske enkelt å skrive den ut. Send et stabelobjekt til System.out.println og Stackens toString()-metode vil gi en fin oppsummering:
// se alle elementene i en stabel
System.out.println (kunder);
Koden ovenfor skriver ut følgende utdata til konsollen:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]
Søke etter en vareposisjon i en stabel
Hvis du kjenner et element i stabelen, kan du identifisere dets indeksposisjon eller posisjon i forhold til toppen av stabelen. De oversikt over() metoden tar et element i stakken og returnerer dets indeksposisjon. Vær oppmerksom på at en stabel begynner å indeksere elementene til null.
// finn en elementindeksposisjon
System.out.println (Customers.indexOf("Jane Doe"));
Koden ovenfor skriver ut følgende utdata til konsollen:
0
De Søk() metoden er en av Stack-klassens primære metoder. Den returnerer en gjenstandsposisjon i forhold til toppen av stabelen, der elementet øverst i stabelen har posisjon nummer én.
System.out.println (Customers.search("Jane Doe"));
Koden ovenfor skriver ut følgende utdata til konsollen:
7
Hvis du leverer Søk() eller oversikt over() metoder med et element som ikke er i stabelen, vil de returnere en negativ.
System.out.println (Customers.search("Elsa Doe"));
System.out.println (Customers.indexOf("Elsa Doe"));
Koden ovenfor skriver ut følgende utdata til konsollen:
-1
-1
Oppdatering av elementer i en stabel
Du kan bare manipulere et element på toppen av en stabel. Så hvis du vil oppdatere et element som ikke er på toppen av stakken, må du sette alle elementene over det. De pop() metoden er en av Stackens primære metoder. De pop() metoden tar ingen argumenter. Den fjerner varen øverst i stabelen og returnerer den.
// oppdater et objekt
Customers.pop();
Customers.pop();
Customers.push("Ella James");
Customers.push("Jessica Brown");
System.out.println (kunder);
Koden ovenfor skriver ut følgende utdata til konsollen:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]
Som du kan se fra utdataene, oppdaterer koden Ellas etternavn til James. Det involverer en prosess som spretter gjenstander fra stabelen til du kommer til målobjektet. Den spretter deretter målobjektet; oppdaterer den; og skyver den, sammen med gjenstandene som var på toppen av målgjenstanden, tilbake til stabelen. Du må bruke et program som utfører operasjoner som den ovenfor, hver gang du ønsker å oppdatere et element i stakken.
Slette et element fra en stabel
For å slette et enkelt element fra Stack-datastrukturen, kan du igjen bruke pop()-metoden. Hvis elementet du vil slette ikke er på toppen, kan du sprette elementer på toppen til du kommer til ønsket.
Sletting av alle elementene i en stabel
For å slette alle elementene fra en stabel, kan du bruke en Java mens loop med pop()-metoden for å slette elementene ett om gangen. En mer effektiv tilnærming er imidlertid å bruke klar() metode. De klar() metoden er en som Stack-klassen arver fra Vector-klassen. Den tar ingen argumenter, returnerer ingenting, men fjerner ganske enkelt alle elementene i Stack-datastrukturen.
// slett alle elementer i en stabel
Customers.clear();
System.out.println (Customers.empty());
Koden ovenfor sletter alle varene i kundestabelen. Den bruker da tømme() metode for å sjekke om stabelen er tom. De tømme() er en annen primær metode for Java Stack Class. Den tar ingen argumenter og returnerer en boolsk verdi. Denne metoden returnerer true hvis stakken er tom og usann ellers.
Koden ovenfor skriver ut følgende utdata til konsollen:
ekte
Praktiske applikasjoner for stabeldatastrukturen
Stakkdatastrukturen er svært restriktiv. Det gir ikke like mye fleksibilitet i databehandling som andre datastrukturer. Dette reiser spørsmålet: når bør du bruke stakkdatastrukturen?
Stack-datastrukturen passer perfekt for applikasjoner som krever databehandling i omvendt rekkefølge. Disse inkluderer:
- En applikasjon som sjekker om et ord er et palindrom.
- Et program som konverterer desimaltall til binære tall.
- Apper som lar brukere angre.
- Spill som lar en bruker gå tilbake til tidligere trekk, for eksempel et sjakkspill.