Java - Klasa Stack


Okvir Java kolekcija ima klasu pod nazivom Stack koja pruža funkcionalnost strukture podataka steka. Klasa Stack proširuje klasu Vector.



Implementacija steka

U steku, elementi se pohranjuju i pristupaju na način Last In First Out. To jest, elementi se dodaju na vrh steka i uklanjaju sa vrha.



Kreiranje steka

Da bismo kreirali stek, prvo moramo importovati paket java.util.Stack. Kada importujemo paket, evo kako možemo kreirati stek u Javi.

Stack<Type> stacks = new Stack<>();

Ovdje Type označava tip steka. Na primjer:

// Kreirajte steka tipa Integer
Stack<Integer> stacks = new Stack<>();

// Kreirajte steka tipa String
Stack<String> stacks = new Stack<>();


Metode steka

Pošto Stack proširuje klasu Vector, on nasljeđuje sve metode od Vector. Da biste saznali više o različitim Vector metodama, pogledajte lekciju Java Vector klase. Pored ovih metoda, klasa Stack uključuje još 5 metoda koje je razlikuju od Vector.


Metoda push()

Da bismo dodali element na vrh steka, koristimo metodu push(). Pogledajmo primjer:

import java.util.Stack;

class Main {
    public static void main(String[] args) {
        Stack<String> animals= new Stack<>();

        // Dodavanje elementata steku
        animals.push("Pas");
        animals.push("Mačka");
        animals.push("Ptica");

        System.out.println("Stack: " + animals);
    }
}

Prikaz koda iz gornjeg primjera izgledaće ovako:

Stack: [Pas, Mačka, Ptica]


Metoda pop()

Da bismo uklonili element sa vrha steka, koristimo metodu pop(). Pogledajmo primjer:

import java.util.Stack;

class Main {
    public static void main(String[] args) {
        Stack<String> animals= new Stack<>();

        // Dodavanje elemenata steku
        animals.push("Pas");
        animals.push("Mačka");
        animals.push("Ptica");
        System.out.println("Inicijalni Stack: " + animals);

        // Uklanjanje elementa steka
        String element = animals.pop();
        System.out.println("Uklonjeni element: " + element);
    }
}

Prikaz koda iz gornjeg primjera izgledaće ovako:

Inicijalni Stack: [Pas, Mačka, Ptica]
Uklonjeni element: Ptica


Metoda peek()

Metoda peek() vraća objekat sa vrha steka. Pogledajmo primjer:

import java.util.Stack;

class Main {
    public static void main(String[] args) {
        Stack<String> animals= new Stack<>();

        // Dodavanje elementa steku
        animals.push("Pas");
        animals.push("Mačka");
        animals.push("Ptica");
        System.out.println("Stack: " + animals);

        // Pristupanje elementu sa vrha
        String element = animals.peek();
        System.out.println("Element na vrhu: " + element);

    }
}

Prikaz koda iz gornjeg primjera izgledaće ovako:

Stack: [Pas, Mačka, Ptica]
Element na vrhu: Ptica


Metoda search()

Za pretraživanje elementa u steku koristimo metodu search(). Vraća poziciju elementa sa vrha steka. Pogledajmo primjer:

import java.util.Stack;

class Main {
    public static void main(String[] args) {
        Stack<String> animals= new Stack<>();

        // Dodavanje elementa steku
        animals.push("Pas");
        animals.push("Ptica");
        animals.push("Mačka");
        System.out.println("Stack: " + animals);

        // Pretraživanje elementa
        int position = animals.search("Ptica");
        System.out.println("Pozicija elementa Ptica je: " + position);
    }
}

Prikaz koda iz gornjeg primjera izgledaće ovako:

Stack: [Pas, Ptica, Mačka]
Pozicija elementa Ptica je: 2


Metoda empty()

Da bismo provjerili da li je stek prazan ili ne, koristimo metodu empty(). Pogledajmo primjer:

import java.util.Stack;

class Main {
    public static void main(String[] args) {
        Stack<String> animals= new Stack<>();

        // Dodavanje elementa steku
        animals.push("Pas");
        animals.push("Mačka");
        animals.push("Ptica");
        System.out.println("Stack: " + animals);

        // Provjera da li stek prazan
        boolean result = animals.empty();
        System.out.println("Da li je stek prazan? " + result);
    }
}

Prikaz koda iz gornjeg primjera izgledaće ovako:

Stack: [Pas, Mačka, Ptica]
Da li je stek prazan? false