java stack tutorial stack class implementation with examples
Deze tutorial legt uit wat Stack in Java is, Java Stack Class, Stack API-methoden, Stack-implementatie met behulp van Array & Linked List met behulp van voorbeelden:
Een stack is een geordende datastructuur behorende bij het Java Collection Framework. In deze verzameling worden de elementen slechts aan één kant toegevoegd en verwijderd. Het einde waarop de elementen worden toegevoegd en verwijderd, wordt 'Top of the Stack' genoemd.
Omdat toevoegen en verwijderen slechts aan één kant gebeurt, is het eerste element dat aan de stapel wordt toegevoegd, het laatste element dat van de stapel is verwijderd. Stack wordt dus een LIFO-gegevensstructuur (Last-in, First-out) genoemd.
hoe je een computerprogramma voor beginners maakt
Bekijk hier de Java-beginnershandleiding
Wat je leert:
- Java Stack-collectie
- Gevolgtrekking
Java Stack-collectie
Een picturale weergave van de stapel wordt hieronder gegeven.
Zoals getoond in de bovenstaande volgorde van weergave, is de stapel aanvankelijk leeg en is de bovenkant van de stapel ingesteld op -1. Vervolgens starten we een “push” -operatie die wordt gebruikt om een element aan de stapel toe te voegen.
Dus in de tweede weergave drukken we op element 10. Op dit punt wordt de bovenkant verhoogd. We schuiven weer element 20 in de stapel waardoor de bovenkant verder wordt verhoogd.
In de laatste weergave starten we een 'pop' -operatie. Deze handeling wordt gebruikt om een element van de stapel te verwijderen. Een element dat momenteel naar ‘Top’ verwijst, wordt verwijderd door de pop-bewerking.
Een stapelgegevensstructuur ondersteunt de volgende bewerkingen:
- Duwen: Voegt een element toe aan de stapel. Als resultaat wordt de waarde van de top verhoogd.
- Knal: Een element wordt van de stapel verwijderd. Na de pop-operatie wordt de waarde van de top verlaagd.
- Kijkje: Deze bewerking wordt gebruikt om een element op te zoeken of te zoeken. De waarde van de top wordt niet gewijzigd.
De bovenkant van de stapel die wordt gebruikt als uiteinde om elementen toe te voegen / te verwijderen uit de stapel, kan op een bepaald moment ook verschillende waarden hebben. Als de grootte van de stapel N is, heeft de bovenkant van de stapel de volgende waarden onder verschillende omstandigheden, afhankelijk van de toestand waarin de stapel zich bevindt.
Status van stapel | Topwaarde |
---|---|
Stapel leeg | -1 |
Een element in de stapel | 0 |
Stapel vol | N-1 |
Overloop (elementen> N) | N |
Stack Class in Java
Java Collection Framework biedt een klasse met de naam 'Stack'. Deze Stack-klasse breidt de Vector-klasse uit en implementeert de functionaliteit van de Stack-gegevensstructuur.
Het onderstaande diagram toont de hiërarchie van de Stack-klasse.
Zoals getoond in het bovenstaande diagram, erft de Stack-klasse de Vector-klasse, die op zijn beurt de List Interface of Collection-interface implementeert.
De klasse Stack is een onderdeel van het pakket java.util. Om de Stack-klasse in het programma op te nemen, kunnen we de importinstructie als volgt gebruiken.
of
Maak een stapel in Java
Nadat we de Stack-klasse hebben geïmporteerd, kunnen we een Stack-object maken zoals hieronder wordt weergegeven:
We kunnen ook als volgt een generiek type Stack-klasseobject maken:
Hier kan data_type elk geldig gegevenstype in Java zijn.
Bijvoorbeeld we kunnen de volgende Stack class-objecten maken.
Stack API-methoden in Java
De klasse Stack biedt methoden om gegevens in de Stack toe te voegen, te verwijderen en te zoeken. Het biedt ook een methode om te controleren of de stapel leeg is. We zullen deze methoden in de onderstaande sectie bespreken.
Stack Push Operation
De push-operatie wordt gebruikt om elementen in de stapel te duwen of toe te voegen. Zodra we een stack-instantie hebben gemaakt, kunnen we de push-bewerking gebruiken om de elementen van het stack-objecttype aan de stack toe te voegen.
Het volgende stuk code wordt gebruikt om een stapel met gehele getallen met de waarden te initialiseren.
De initiële stack die is verkregen als resultaat van het bovenstaande stuk code-uitvoering wordt hieronder weergegeven:
Als we nog een push () -bewerking uitvoeren zoals hieronder weergegeven,
De resulterende stapel zal zijn:
Stack Pop Operation
We kunnen het element van de stapel verwijderen met behulp van de 'pop' -operatie. Het element dat momenteel door de Top wordt aangewezen, wordt van de stapel geschopt.
Het volgende stuk code bereikt dit.
De variabele val bevat de waarde 200 omdat dit het laatste element was dat in de stapel werd geduwd.
De stapelweergave voor push- en pop-bediening is als volgt:
Stack Peek Operation
De kijkoperatie geeft de bovenkant van de stapel terug zonder het element te verwijderen. In het bovenstaande stackvoorbeeld retourneert 'intStack.peek ()' 200.
Stapel is leeg
De bewerking isEmpty () van de klasse Stack controleert of het stack-object leeg is. Het geeft true terug als de stapel geen elementen bevat, anders geeft het false.
Stack Search-bewerking
We kunnen zoeken naar een element op de stapel met behulp van de zoekbewerking (). De operatie search () retourneert de index van het element waarnaar wordt gezocht. Deze index wordt vanaf de bovenkant van de stapel geteld.
Stapel grootte
De grootte van het Stack-object wordt gegeven door de java.util.Stack.size () methode. Het geeft het totale aantal elementen in de stapel terug.
In het volgende voorbeeld wordt de stapelgrootte afgedrukt.
Stapelelementen afdrukken / herhalen
We kunnen een iterator voor de stapel declareren en vervolgens met deze iterator door de hele stapel lopen. Zo kunnen we elk stapelelement een voor een bezoeken en printen.
Het volgende programma toont de manier om Stack te itereren met een iterator.
Uitgang:
Stapel elementen:
PUNE MUMBAI NASHIK
Stapelen met Java 8
We kunnen de stapelelementen ook afdrukken of doorlopen met behulp van Java 8-functies zoals Stream API's, forEach en forEachRemaining constructs.
Het volgende programma demonstreert het gebruik van Java 8-constructies om door de stapel te lopen.
Uitgang:
Stapel elementen met Java 8 voor elk:
PUNE MUMBAI NASHIK
Stapel elementen met Java 8 forEachRemaining:
PUNE MUMBAI NASHIK
Stack-implementatie in Java
Het volgende programma implementeert de gedetailleerde stapel die de verschillende stapelbewerkingen demonstreert.
Uitgang:
Initiële stapel: ()
Is de stapel leeg? : waar
Stapelen na push-operatie: (10, 20, 30, 40)
Element kwam tevoorschijn: 40
Stapelen na pop-operatie: (10, 20, 30)
Element 10 gevonden op positie: 3
Is de stapel leeg? : niet waar
Stack to Array in Java
De stackgegevensstructuur kan worden geconverteerd naar een Array met de ‘toArray ()’ - methode van de Stack-klasse.
Het volgende programma demonstreert deze conversie.
Uitgang:
The Stack-inhoud: (PUNE, MUMBAI, NASHIK)
De array-inhoud:
PUNE MUMBAI NASHIK
Stack-implementatie in Java met behulp van array
De stapel kan worden geïmplementeerd met behulp van een array. Alle stapelbewerkingen worden uitgevoerd met behulp van een array.
Het onderstaande programma demonstreert de Stack-implementatie met behulp van een array.
Uitgang:
Initiële stapel leeg: waar
Na push-operatie ...
Stapelelementen afdrukken… ..
40 30 20 10
Item geknald: 40
Item geknald: 30
After Pop Operation ...
Stapelelementen afdrukken… ..
20 10
Stack-implementatie met behulp van gekoppelde lijst
De stapel kan ook worden geïmplementeerd met behulp van een gekoppelde lijst, net zoals we hebben gedaan met het gebruik van arrays. Een voordeel van het gebruik van een gekoppelde lijst voor het implementeren van stack is dat deze dynamisch kan groeien of krimpen. We hebben geen beperking van de maximale grootte nodig, zoals bij arrays.
Het volgende programma implementeert een gekoppelde lijst om stapelbewerkingen uit te voeren.
Uitgang:
Stapel elementen:
1-> 3-> 5-> 7-> 9->
Bovenste stapel: 1
Pop twee elementen
Stapel elementen:
5-> 7-> 9->
Nieuwe stapel bovenaan: 5
Veel Gestelde Vragen
V # 1) Wat zijn stapels in Java?
Antwoord: Een stapel is een LIFO-gegevensstructuur (Last in, First out) voor het opslaan van elementen. De stapelelementen worden toegevoegd aan of verwijderd van de stapel vanaf het ene uiteinde genaamd Top of the stack.
Het toevoegen van een element aan de stapel gebeurt met behulp van de Push-operatie. Het verwijderen van elementen gebeurt met behulp van de pop-operatie. In Java wordt een stack geïmplementeerd met behulp van de Stack-klasse.
Vraag 2) Is een verzameling stapelen in Java?
Antwoord: Ja. De stack is een legacy-collectie in Java die beschikbaar is vanaf Collection API in Java 1.0 en hoger. Stack neemt de Vector-klasse van de List-interface over.
V # 3) Is Stack een interface?
Antwoord: Interfacestack is een interface die de last-in, first-out-structuur beschrijft en wordt gebruikt voor het opslaan van de toestand van recursieve problemen.
V # 4) Waar worden stapels voor gebruikt?
Antwoord: Hieronder volgen de belangrijkste toepassingen van de stapel:
- Uitdrukking evaluatie en conversies: Stack wordt gebruikt voor het omzetten van uitdrukkingen in postfix, tussenvoegsel en voorvoegsel. Het wordt ook gebruikt om deze uitdrukkingen te evalueren.
- De stapel wordt ook gebruikt voor het ontleden van syntaxisbomen.
- De stapel wordt gebruikt om haakjes in een uitdrukking te controleren.
- De stapel wordt gebruikt om backtracking-problemen op te lossen.
- Functieaanroepen worden geëvalueerd met behulp van stapels.
V # 5) Wat zijn de voordelen van de stapel?
Antwoord: Variabelen die op de stapel zijn opgeslagen, worden automatisch vernietigd wanneer ze worden geretourneerd. Stapels zijn een betere keuze wanneer geheugen is toegewezen en ongedaan gemaakt. Stacks ruimen ook het geheugen op. Afgezien daarvan kunnen stapels effectief worden gebruikt om uitdrukkingen te evalueren en de uitdrukkingen te ontleden.
Gevolgtrekking
Hiermee is onze tutorial over Stacks in Java voltooid. Stack-klasse is een onderdeel van de collectie-API en ondersteunt push-, pop-, peek- en zoekbewerkingen. De elementen worden slechts aan één kant toegevoegd aan of verwijderd van de stapel. Dit uiteinde wordt de bovenkant van de stapel genoemd.
hoe u een eps-bestand opent
In deze tutorial hebben we alle methoden gezien die worden ondersteund door de stackklasse. We hebben de stack ook geïmplementeerd met behulp van arrays en gekoppelde lijsten.
We zullen doorgaan met andere verzamelklassen in onze volgende tutorials.
Lees de Easy Java Training Series door
Aanbevolen literatuur
- Zelfstudie over reflectie in Java met voorbeelden
- Zelfstudie voor Java-scannerklassen met voorbeelden
- Wat is een Java HashTable - HashTable-implementatie en -voorbeeld
- Wat is Java-vector | Java Vector Class-zelfstudie met voorbeelden
- Zelfstudie voor Java-array-klassen - java.util.Arrays-klasse met voorbeelden
- Java Basics: Java Syntax, Java Class en Core Java Concepts
- LinkedHashMap in Java - LinkedHashMap-voorbeeld en implementatie
- Java SWING-zelfstudie: afhandeling van containers, componenten en gebeurtenissen