Java Stack-klassen udvider Vector-klassen. Det lader dig oprette nye elementer, se et element i stakken, opdatere et element i stakken og slette alle elementer fra stakken. Stabler procesdata i en først-ind-sidst-ud (FILO) rækkefølge. Det betyder, at du kun kan tilføje eller fjerne elementer fra toppen af en stak.
Stakdatastrukturen har fem primære metoder. Java Stack-klassen har dog også adgang til over 40 andre metoder, som den arver fra Vector-klassen.
Oprettelse af en stak i Java
Stack-klassen har en enkelt konstruktør der giver dig mulighed for at oprette en tom stak. Hver stak har et typeargument, som dikterer den type data, den vil gemme.
importere java.util. Stak;
offentligklasseHoved{
offentligstatiskugyldigvigtigste(String[] args){
// opret en stak
StakKunder = ny Stak ();
}
}
Koden ovenfor opretter en stak datastruktur kaldet Kunder der gemmer strengværdier.
Befolkning af en stak
En af Stack-klassens fem primære metoder er skubbe() metode. Det tager et enkelt element, der har samme datatype som stakken, og skubber det element til toppen af stakken.
// udfylde en stak
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 udfylder kundernes stak med syv varer. Det skubber hvert nyt emne til toppen af stakken. Så varen øverst i kundestakken er Jessica Brown. Og du kan bekræfte dette ved at bruge stakken kig() metode. Det kig() metode tager ingen argumenter. Det returnerer objektet øverst i stakken uden at fjerne det.
// se objekt øverst i en stak
System.out.println (Customers.peek());
Ovenstående kode returnerer følgende output til konsollen:
Jessica Brown
Se genstandene i en stak
Stakdatastrukturen er ret restriktiv med hensyn til, hvordan den giver dig mulighed for at interagere med dens data. Du bør hovedsageligt bruge en stak via dens øverste element. Du kan dog også bruge metoder nedarvet fra Vector-klassen til at få adgang til vilkårlige elementer. Sådanne metoder omfatter elementAt og removeElementAt.
Den nemmeste måde at få et overblik over en staks indhold på er simpelthen at udskrive den. Send et stakobjekt til System.out.println og Stackens toString()-metode vil producere en flot oversigt:
// se alle elementer i en stak
System.out.println (Kunder);
Koden ovenfor udskriver følgende output til konsollen:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]
Søgning efter en vareposition i en stak
Hvis du kender et element i stakken, kan du identificere dets indeksposition eller dets position i forhold til toppen af stakken. Det indeks af() metoden tager et element i stakken og returnerer dets indeksposition. Vær opmærksom på, at en stak begynder at indeksere sine elementer til nul.
// find en vareindeksposition
System.out.println (Customers.indexOf("Jane Doe"));
Koden ovenfor udskriver følgende output til konsollen:
0
Det Søg() metode er en af Stack-klassens primære metoder. Det returnerer en vareposition i forhold til toppen af stakken, hvor varen øverst i stakken har position nummer et.
System.out.println (Customers.search("Jane Doe"));
Koden ovenfor udskriver følgende output til konsollen:
7
Hvis du leverer Søg() eller den indeks af() metoder med en vare, der ikke er i stakken, vil de returnere en negativ.
System.out.println (Customers.search("Elsa Doe"));
System.out.println (Customers.indexOf("Elsa Doe"));
Koden ovenfor udskriver følgende output til konsollen:
-1
-1
Opdatering af elementer i en stak
Du kan kun manipulere et element i toppen af en stak. Så hvis du vil opdatere et element, der ikke er øverst i stakken, bliver du nødt til at pop alle elementerne over det. Det pop() metode er en af stakkens primære metoder. Det pop() metode tager ingen argumenter. Den fjerner varen øverst i stakken og returnerer den.
// opdater et objekt
Customers.pop();
Customers.pop();
Customers.push("Ella James");
Customers.push("Jessica Brown");
System.out.println (Kunder);
Koden ovenfor udskriver følgende output til konsollen:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]
Som du kan se fra outputtet, opdaterer koden Ellas efternavn til James. Det involverer en proces, der popper genstande fra stakken, indtil du ankommer til målobjektet. Det popper derefter målobjektet; opdaterer det; og skubber det, sammen med emnerne, der var oven på målelementet, tilbage til stakken. Du bliver nødt til at bruge et program, der udfører handlinger som ovenstående, hver gang du ønsker at opdatere et element i din stak.
Sletning af et element fra en stak
For at slette et enkelt element fra stakdatastrukturen kan du igen bruge pop()-metoden. Hvis det element, du vil slette, ikke er øverst, kan du pop elementer øverst, indtil du når det ønskede.
Sletning af alle elementer i en stak
For at slette alle elementer fra en stak, kan du bruge en Java mens loop med pop()-metoden for at slette elementerne et ad gangen. En mere effektiv tilgang er imidlertid at bruge klar() metode. Det klar() metode er en, som Stack-klassen arver fra Vector-klassen. Det tager ingen argumenter, returnerer intet, men fjerner simpelthen alle elementer i stakdatastrukturen.
// slet alle elementer i en stak
Customers.clear();
System.out.println (Customers.empty());
Koden ovenfor sletter alle varer i kundestakken. Den bruger så tom() metode til at kontrollere, om stakken er tom. Det tom() er en anden primær metode i Java Stack Class. Den tager ingen argumenter og returnerer en boolsk værdi. Denne metode returnerer sand, hvis stakken ellers er tom og falsk.
Koden ovenfor udskriver følgende output til konsollen:
rigtigt
Praktiske applikationer til stakdatastrukturen
Stakdatastrukturen er meget restriktiv. Det giver ikke så meget fleksibilitet i databehandling som andre datastrukturer. Dette rejser spørgsmålet: hvornår skal du bruge stakdatastrukturen?
Stack-datastrukturen er ideel til applikationer, der kræver databehandling i omvendt rækkefølge. Disse omfatter:
- Et program, der kontrollerer, om et ord er et palindrom.
- Et program, der konverterer decimaltal til binære tal.
- Programmer, der giver brugerne mulighed for at fortryde.
- Spil, der giver en bruger mulighed for at gå tilbage til tidligere træk, såsom et skakspil.