Java ile Stack Sınıfı ve Kullanımı

Java ile Stack Sınıfı ve Kullanımı

Herkese merhabalar, bu yazımızda sizlere Java programlama dilinde Stack sınıfından bahsedeceğim. Stack sınıfı ile bir veri ve verilerin tutulması yapısı ve prensipleri hakkında konuşacağız.

Başlayalım.

İlk olarak Stack veri yapısı nedir
Stack veri yapısı diziye ilk giren elemanın son çıktığı ve son giren elemanın ilk çıktığı veri yapı tipidir.
(LIFO : Last In First Out)

Java Collection, bizlere Stack verinin ve yapısının yönetilmesi için bizlere Stack sınıfını sunmaktadır. Stack sınıfıda diğer collection sınıfları gibi dinamik bir yapıya sahiptir ve eleman eklendikçe boyutu artar. Temelde var olan push ve pop metodlarına ek olarak empty, search ve peek metodları bulunmaktadır.

Stack sınıfı aynı zamanda Vector sınıfından kalıtım almaktadır.

Aşağıda Stack sınıfına ait diagramı görebilirsiniz: Stack Sınıfı Diagramı

Şimdi örnekler ile Stack sınıfının kullanımından bahsedelim.

İlk olarak projemize Stack kütüphanesini dahil edelim.

import java.util.Stack;
Stack sınıfı bir adet constructor bulundurmaktadır. Bu constructor herhangi bir parametre almaz ve çağrıldığında boş bir Stack koleksiyonu oluşturur.

Stack s = new Stack();

Peki bir stack koleksiyonu nasıl oluşturulur
Stack sınıfının bir tane constructor metodu bulunur ve bu metod herhangi bir parametre almaz. Aşağıdaki örnekte E olarak bir değişken tipi belirtilmektedir. Bu şekilde String, int, bool gibi değişken türlerinde elemanlar atayabiliriz. Aynı zamanda herhangi bir değişken tipi belirtmeden de bir stack koleksiyonu oluşturabiliriz.

Stack nesnesi oluşturma

Stack<E> st= new Stack<E>();
Stack s = new Stack();

Önemli
Stack sınıfı Vector sınıfını extend ettiği için stack sınıfında işlemler yaparken Vector sınıfında var olan metodları göreceksiniz. Bu yazımızda bizler Vector sınıfındaki metodları kullanmayıp, Stack sınıfına ait metodları kullanacağız.

Şimdi oluşturulan bu stack nesnelerini kullanarak push, pop, peek, search ve empty gibi Stack sınıfının bize sağladığı metodları kullanalım.

Aşağıdaki kod bloğunda Stack sınıfının sağladığı komutların kullanımlarını görebilirsiniz:

public static void main(String[] args) {
        Stack<String> s = new Stack();
        
        //Push ile stack koleksiyonuna verileri ekleyebiliriz
        s.push("Burak");
        s.push("Hamdi");
        s.push("TUFAN");
        s.push("TheCodeProgram");
        
        //Normal bir koleksiyon gibi yazdırılabilir
        System.out.println("Stack koleksiyonu : " + s);
        
        //search ile bir nesnenin koleksiyon içerisindeki konumunu bulabiliriz.
        int pos = s.search("Hamdi");
        System.out.println("Eleman indexi : " + pos);
        
        //peek komutu ile koleksiyon içerisindeki en üstte bulunan eleman, 
        //koleksiyondan kaldırılmadan alınabilir.
        String peekElement = s.peek();
        System.out.println("En üstteki eleman : " + peekElement);

        //Vector sınıfından kalıtım alınan size komutu ile eleman sayısı alınabilir
        int ilkSize = s.size();
        System.out.println("Pop öncesi eleman sayısı : " + ilkSize);
        
        //empty ile stack koleksiyonunun boş olduğunu kontrol edebiliriz
        //pop ile stack içerisindeki elemanları tersten okuyup, koleksiyondan kaldırabiliriz
        while(s.empty() == false){
            System.out.println(s.pop());
        }
        
        int sonSize = s.size();
        System.out.println("Pop sonrası eleman sayısı : " + sonSize);
    }
Program çıktısı:

Stack koleksiyonu : [Burak, Hamdi, TUFAN, TheCodeProgram]
Eleman indexi : 3
En üstteki eleman : TheCodeProgram
Pop öncesi eleman sayısı : 4
TheCodeProgram
TUFAN
Hamdi
Burak
Pop sonrası eleman sayısı : 0
Şimdi fonksiyonların görevlerini konuşalım:
  • push metodu ile stack koleksiyonuna verileri ekleyebiliriz
  • search metodu ile bir nesnenin koleksiyon içerisindeki konumunu bulabiliriz.
  • peek metodu ile koleksiyon içerisindeki en üstte bulunan eleman, //koleksiyondan kaldırılmadan alınabilir.
  • empty metodu ile stack koleksiyonunun boş olduğunu kontrol edebiliriz
  • pop metodu ile stack içerisindeki elemanları tersten okuyup, koleksiyondan kaldırabiliriz

Son olarak peek komutu ile ilgili bir not düşmek isterim.
Eğer peek ve pop metodlarını, koleksiyon boş iken kullanmaya çalışırsak programda EmptyStackException oluşacaktır. Dolayısıyla okuma işlemlerinde koleksiyonun boş olmaması kontrol edilmelidir.

Bu yazımızda Java ile Stack sınıfını konuşmuş olduk.

Örnek kaynak kodlara Github üzerinden aşağıdaki link aracılığı ile erişebilirsiniz.
https://github.com/thecodeprogram/TheSingleFiles/blob/master/StackClassOrnek.java

Burak Hamdi TUFAN


Tags


Share this Post

Send with Whatsapp

Post a Comment

Success! Your comment sent to post. It will be showed after confirmation.
Error! There was an error sending your comment.

Comments

  • There is no comment. Be the owner of first comment...