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.
Şimdi örnekler ile Stack sınıfının kullanımından bahsedelim.
import java.util.Stack;
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<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.
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);
}
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
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
Comments