De Java Stack-klasse breidt de Vector-klasse uit. Hiermee kunt u nieuwe elementen maken, een element in de stapel bekijken, een element in de stapel bijwerken en alle elementen uit de stapel verwijderen. Stacks verwerken gegevens in een first-in-last-out (FILO) volgorde. Dit betekent dat u alleen items bovenaan een stapel kunt toevoegen of verwijderen.

De stapelgegevensstructuur heeft vijf primaire methoden. De klasse Java Stack heeft echter ook toegang tot meer dan 40 andere methoden, die hij erft van de klasse Vector.

Een stapel maken in Java

De Stack-klasse heeft een enkele constructor waarmee u een lege stapel kunt maken. Elke stapel heeft een typeargument, dat bepaalt welk type gegevens het zal opslaan.

importeren java.util. Stapel;

openbaarklasHoofd{
openbaarstatischleegtehoofd(String[] argumenten){
// maak een stapel
Stapel Klanten = nieuwe Stapel();
}
}

De bovenstaande code creëert een Stack-gegevensstructuur genaamd Klanten die String-waarden opslaat.

Een stapel vullen

Een van de vijf primaire methoden van de Stack-klasse is de

instagram viewer
duw() methode. Er is een enkel item nodig dat hetzelfde gegevenstype heeft als de stapel en dat item naar de top van de stapel duwt.

// vul een stapel
Klanten.push("Jane Doe");
Klanten.push("John Doe");
Klanten.push("Patrick Williams");
Klanten.push("Paul Smith");
Klanten.push("Erick Rowe");
Klanten.push("Ella Jones");
Klanten.push("Jessica Brown");

De bovenstaande code vult de klantenstapel met zeven items. Het duwt elk nieuw item naar de top van de stapel. Het item bovenaan de klantenstapel is dus Jessica Brown. En u kunt dit bevestigen met behulp van de Stack kijkje() methode. De kijkje() methode neemt geen argumenten. Het geeft het object bovenaan de stapel terug zonder het te verwijderen.

// bekijk object bovenaan een stapel
Systeem.uit.println (Klanten.peek());

De bovenstaande code retourneert de volgende uitvoer naar de console:

Jessica Brown

Bekijk de items in een stapel

De stapelgegevensstructuur is vrij beperkend in de manier waarop u met de gegevens kunt communiceren. U moet een stapel voornamelijk gebruiken via het bovenste item. U kunt echter ook methoden gebruiken die zijn overgenomen van de Vector-klasse om toegang te krijgen tot willekeurige elementen. Dergelijke methoden omvatten elementAt en removeElementAt.

De eenvoudigste manier om een ​​overzicht van de inhoud van een stapel te krijgen, is door deze eenvoudig af te drukken. Geef een Stack-object door aan Systeem.uit.println en de methode toString() van Stack zal een mooie samenvatting opleveren:

// bekijk alle elementen van een stapel
System.out.println (Klanten);

De bovenstaande code drukt de volgende uitvoer af naar de console:

[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella Jones, Jessica Brown]

Zoeken naar een itempositie in een stapel

Als u een item in de stapel kent, kunt u de indexpositie of de positie ten opzichte van de bovenkant van de stapel identificeren. De index van() methode neemt een item in de stapel en retourneert zijn indexpositie. Houd er rekening mee dat een stapel de items op nul begint te indexeren.

// zoek een itemindexpositie
System.out.println (Customers.indexOf("Jane Doe"));

De bovenstaande code drukt de volgende uitvoer af naar de console:

0

De zoeken() methode is een van de primaire methoden van de Stack-klasse. Het geeft een itempositie terug ten opzichte van de bovenkant van de stapel, waar het item bovenaan de stapel positie nummer één heeft.

System.out.println (Customers.search("Jane Doe"));

De bovenstaande code drukt de volgende uitvoer af naar de console:

7

Als u de zoeken() of de index van() methoden met een item dat niet in de stapel staat, zullen ze een negatieve retourneren.

System.out.println (Customers.search("Elsa Doe"));
System.out.println (Customers.indexOf("Elsa Doe"));

De bovenstaande code drukt de volgende uitvoer af naar de console:

-1
-1

Items in een stapel bijwerken

Je kunt alleen een item boven aan een stapel manipuleren. Dus als u een element wilt bijwerken dat niet bovenaan de stapel staat, moet u alle items erboven laten verschijnen. De knal() methode is een van de primaire methoden van de Stack. De knal() methode neemt geen argumenten. Het verwijdert het item bovenaan de stapel en geeft het terug.

// update een object
Klanten.pop();
Klanten.pop();
Klanten.push("Ella James");
Klanten.push("Jessica Brown");
System.out.println (Klanten);

De bovenstaande code drukt de volgende uitvoer af naar de console:

[Jane Doe, John Doe, Patrick Williams, Paul Smith, Erick Rowe, Ella James, Jessica Brown]

Zoals je kunt zien aan de uitvoer, werkt de code Ella's achternaam bij in James. Het omvat een proces dat items uit de stapel haalt totdat u bij het doelobject aankomt. Vervolgens wordt het doelobject weergegeven; werkt het bij; en duwt het, samen met de items die bovenop het doelitem waren, terug naar de stapel. Elke keer dat u een item in uw Stack wilt bijwerken, moet u een programma gebruiken dat bewerkingen zoals hierboven uitvoert.

Een item uit een stapel verwijderen

Om een ​​enkel item uit de Stack-gegevensstructuur te verwijderen, kunt u opnieuw de methode pop() gebruiken. Als het item dat u wilt verwijderen niet bovenaan staat, kunt u items bovenaan plaatsen totdat u het gewenste item hebt bereikt.

Alle items in een stapel verwijderen

Om alle elementen van een stapel te verwijderen, kunt u a. gebruiken Java while-lus met de methode pop() om de elementen één voor één te verwijderen. Een efficiëntere aanpak is echter het gebruik van de Doorzichtig() methode. De Doorzichtig() methode is er een die de Stack-klasse erft van de Vector-klasse. Het heeft geen argumenten nodig, retourneert niets, maar verwijdert eenvoudig alle elementen binnen de Stack-gegevensstructuur.

// verwijder alle items in een stapel
Klanten.clear();
Systeem.uit.println (Klanten.leeg());

De bovenstaande code verwijdert alle items in de klantenstapel. Het gebruikt dan de leeg() methode om te controleren of de stapel leeg is. De leeg() is een andere primaire methode van de Java Stack Class. Er zijn geen argumenten voor nodig en retourneert een Booleaanse waarde. Deze methode retourneert waar als de stapel leeg is en anders onwaar.

De bovenstaande code drukt de volgende uitvoer af naar de console:

WAAR

Praktische toepassingen voor de stapelgegevensstructuur

De Stack-gegevensstructuur is zeer beperkend. Het biedt niet zoveel flexibiliteit in gegevensverwerking als andere gegevensstructuren. Dit roept de vraag op: wanneer moet je de Stack-gegevensstructuur gebruiken?

De Stack-gegevensstructuur is ideaal voor toepassingen die gegevensverwerking in omgekeerde volgorde vereisen. Waaronder:

  • Een applicatie die controleert of een woord een palindroom is.
  • Een applicatie die decimale getallen omzet in binaire getallen.
  • Toepassingen waarmee gebruikers ongedaan kunnen maken.
  • Games waarmee een gebruiker terug kan gaan naar eerdere zetten, zoals een schaakspel.