Java Stack-klasse: Uitgebreide handleiding voor gebruik en methoden
Java Stack-klasse
Deze tutorial legt Java's Stack-klasse uit, de kernmethoden en praktische voorbeelden om stack-operaties te beheersen.
Het Java Collections Framework bevat een Stack-klasse die de klassieke stack-datastructuur implementeert. Volgens de officiële Java-documentatie extends Stack de Vector-klasse, waardoor alle methoden geërfd worden en stack-specifieke operaties worden toegevoegd.

Stack-implementatie
Een stack volgt het Last In, First Out (LIFO)-principe: elementen worden bovenop geduwd (push) en bovenop afgehaald (pop). Het volgende diagram illustreert dit gedrag.

Een Stack aanmaken
Om een stack aan te maken, importeer java.util.Stack en instantieer het met het gewenste generieke type:
Stack<Type> stack = new Stack<>();
Voorbeelden:
// Integer stack Stack<Integer> intStack = new Stack<>(); // String stack Stack<String> stringStack = new Stack<>();
Stack-methoden
Naast de geërfde Vector-methoden biedt Stack vijf speciale operaties die het onderscheiden van generieke collecties. Voor een volledige lijst van Vector-methoden, raadpleeg de Vector-klassedocumentatie.
push()-methode
De push()-methode voegt een element toe aan de top van de stack.
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals = new Stack<>(); animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); } }
Output
Stack: [Dog, Horse, Cat]
pop()-methode
De pop()-methode verwijdert en retourneert het element aan de top van de stack.
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals = new Stack<>(); animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Initiële Stack: " + animals); String removed = animals.pop(); System.out.println("Verwijderd element: " + removed); } }
Output
Initiële Stack: [Dog, Horse, Cat] Verwijderd element: Cat
peek()-methode
De peek()-methode haalt het top-element op zonder het te verwijderen.
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals = new Stack<>(); animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); String top = animals.peek(); System.out.println("Element bovenaan: " + top); } }
Output
Stack: [Dog, Horse, Cat] Element bovenaan: Cat
search()-methode
De search()-methode retourneert de 1-gebaseerde positie van een element vanaf de top van de stack, of -1 als het niet aanwezig is.
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals = new Stack<>(); animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); int pos = animals.search("Horse"); System.out.println("Positie van Horse: " + pos); } }
Output
Stack: [Dog, Horse, Cat] Positie van Horse: 2
empty()-methode
De empty()-methode controleert of de stack elementen bevat.
import java.util.Stack; class Main { public static void main(String[] args) { Stack<String> animals = new Stack<>(); animals.push("Dog"); animals.push("Horse"); animals.push("Cat"); System.out.println("Stack: " + animals); boolean isEmpty = animals.empty(); System.out.println("Is de stack leeg? " + isEmpty); } }
Output
Stack: [Dog, Horse, Cat] Is de stack leeg? false
ArrayDeque gebruiken in plaats van Stack
Hoewel Stack een stack implementeert, wordt het als legacy beschouwd. Moderne Java-code kiest voor ArrayDeque (implementerend de Deque-interface) voor stack-functionaliteit omdat het betere prestaties en duidelijke semantiek biedt. Zie voor meer details:
Java
- Java's final-sleutelwoord begrijpen: variabelen, methoden en klassen
- Java instanceof operator: een uitgebreide gids
- Java-erfenis meesteren: concepten, typen en praktische voorbeelden
- Java geneste static classes begrijpen: gebruik, verschillen en voorbeelden
- Java anonieme inner classes meesteren: definitie, syntax en praktische voorbeelden
- Java Singleton patroon uitgelegd: hoe veilig te implementeren en gebruiken
- Java Reflectie meesteren: klassen, methoden en velden inspecteren tijdens runtime
- Java ArrayList meesteren: operaties, methoden en best practices
- Java ObjectOutputStream: Serialisatie, methoden en praktische voorbeelden
- Java Generics: Herbruikbare, type-veilige code bouwen
- Java-bestandsbewerkingen onder de knie krijgen met java.io – Aanmaken, lezen, schrijven en verwijderen