Java Stack-klassen utökar Vector-klassen. Det låter dig skapa nya element, visa ett element i stacken, uppdatera ett element i stacken och ta bort alla element från stacken. Staplar processdata i en först-in-sist-ut-ordning (FILO). Det betyder att du bara kan lägga till eller ta bort objekt från toppen av en stack.
Stackdatastrukturen har fem primära metoder. Men Java Stack-klassen har också tillgång till över 40 andra metoder, som den ärver från Vector-klassen.
Skapa en stack i Java
Stackklassen har en enda konstruktör som låter dig skapa en tom stack. Varje stack har ett typargument som bestämmer vilken typ av data den kommer att lagra.
importera java.util. Stack;
offentligklassMain{
offentligstatisktomhethuvud(String[] args){
// skapa en stack
StackKunder = ny Stack ();
}
}
Koden ovan skapar en stackdatastruktur som kallas Kunder som lagrar strängvärden.
Fylla på en stack
En av Stack-klassens fem primära metoder är tryck() metod. Det tar ett enda objekt som har samma datatyp som stacken och skjuter det objektet till toppen av stacken.
// fylla i en stack
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 ovan fyller kundernas stapel med sju artiklar. Det skjuter varje nytt objekt till toppen av stapeln. Så, föremålet överst i kundstapeln är Jessica Brown. Och du kan bekräfta detta med Stacken titt() metod. De titt() Metoden tar inga argument. Den returnerar objektet överst i stapeln utan att ta bort det.
// se objekt överst i en stack
System.out.println (Customers.peek());
Koden ovan returnerar följande utdata till konsolen:
Jessica Brown
Visa föremålen i en stack
Stackdatastrukturen är ganska restriktiv när det gäller hur den låter dig interagera med dess data. Du bör främst använda en stack via dess översta objekt. Men du kan också använda metoder som ärvts från Vector-klassen för att komma åt godtyckliga element. Sådana metoder inkluderar elementAt och removeElementAt.
Det enklaste sättet att få en överblick över en Stacks innehåll är helt enkelt att skriva ut den. Skicka ett Stack-objekt till System.out.println och Stackens toString()-metod kommer att producera en trevlig sammanfattning:
// visa alla element i en stack
System.out.println (Kunder);
Koden ovan skriver ut följande utdata till konsolen:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]
Söka efter en artikelposition i en stapel
Om du känner till ett objekt i stapeln kan du identifiera dess indexposition eller dess position i förhållande till toppen av stapeln. De index för() metoden tar ett objekt i stapeln och returnerar dess indexposition. Tänk på att en stack börjar indexera sina objekt till noll.
// hitta en objektindexposition
System.out.println (Customers.indexOf("Jane Doe"));
Koden ovan skriver ut följande utdata till konsolen:
0
De Sök() metod är en av Stack-klassens primära metoder. Den returnerar en objektposition i förhållande till toppen av stapeln, där objektet överst i stapeln har position nummer ett.
System.out.println (Customers.search("Jane Doe"));
Koden ovan skriver ut följande utdata till konsolen:
7
Om du tillhandahåller Sök() eller den index för() metoder med ett objekt som inte finns i stacken, returnerar de en negativ.
System.out.println (Customers.search("Elsa Doe"));
System.out.println (Customers.indexOf("Elsa Doe"));
Koden ovan skriver ut följande utdata till konsolen:
-1
-1
Uppdatera objekt i en stack
Du kan bara manipulera ett objekt överst i en stack. Så om du vill uppdatera ett element som inte är överst i stacken, måste du poppa alla objekt ovanför det. De pop() metod är en av Stackens primära metoder. De pop() Metoden tar inga argument. Det tar bort föremålet överst i stapeln och returnerar det.
// uppdatera ett objekt
Customers.pop();
Customers.pop();
Customers.push("Ella James");
Customers.push("Jessica Brown");
System.out.println (Kunder);
Koden ovan skriver ut följande utdata till konsolen:
[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]
Som du kan se från utdata uppdaterar koden Ellas efternamn till James. Det involverar en process som poppar föremål från stapeln tills du kommer fram till målobjektet. Det poppar sedan målobjektet; uppdaterar den; och skjuter den, tillsammans med föremålen som låg ovanpå målobjektet, tillbaka till stapeln. Du måste använda ett program som utför operationer som ovan, varje gång du vill uppdatera ett objekt i din stack.
Ta bort ett objekt från en stack
För att ta bort ett enskilt objekt från Stack-datastrukturen kan du återigen använda pop()-metoden. Om objektet du vill ta bort inte är överst kan du poppa objekt högst upp tills du når önskat.
Ta bort alla objekt i en stack
För att ta bort alla element från en stack kan du använda en Java while loop med metoden pop() för att ta bort elementen ett i taget. Ett mer effektivt tillvägagångssätt är dock att använda klar() metod. De klar() Metoden är en som klassen Stack ärver från klassen Vector. Det tar inga argument, returnerar ingenting, utan tar helt enkelt bort alla element i Stack-datastrukturen.
// radera alla objekt i en stack
Customers.clear();
System.out.println (Customers.empty());
Koden ovan tar bort alla artiklar i kundstapeln. Den använder sedan tömma() metod för att kontrollera om stacken är tom. De tömma() är en annan primär metod för Java Stack Class. Den tar inga argument och returnerar ett booleskt värde. Denna metod returnerar sant om stacken är tom och annars falsk.
Koden ovan skriver ut följande utdata till konsolen:
Sann
Praktiska tillämpningar för stackdatastrukturen
Stackdatastrukturen är mycket restriktiv. Det ger inte lika mycket flexibilitet i databehandling som andra datastrukturer. Detta väcker frågan: när ska du använda stackdatastrukturen?
Stackdatastrukturen är en idealisk passform för applikationer som kräver databehandling i omvänd ordning. Dessa inkluderar:
- En applikation som kontrollerar om ett ord är ett palindrom.
- Ett program som omvandlar decimaltal till binära tal.
- Applikationer som tillåter användare att ångra.
- Spel som låter en användare gå tillbaka till tidigare drag, till exempel ett schackspel.