java stack tutorial stack class implementation with examples
Bu Eğitimde, Java'da Yığın Nedir, Java Yığın Sınıfı, Yığın API Yöntemleri, Dizi ve Bağlantılı Liste Kullanılarak Yığın Gerçekleştirilmesi Örnekler yardımıyla Açıklanmaktadır:
Yığın, Java Collection Framework'e ait sıralı bir veri yapısıdır. Bu koleksiyonda, öğeler yalnızca bir uçtan eklenir ve kaldırılır. Öğelerin eklendiği ve kaldırıldığı sona 'Yığının Üstü' denir.
Ekleme ve silme işlemi yalnızca bir uçta yapıldığından, yığına eklenen ilk öğe yığından kaldırılan son öğe olur. Bu nedenle yığın, LIFO (Son giren, İlk çıkar) veri yapısı olarak adlandırılır.
=> Java Yeni Başlayanlar Kılavuzuna Buradan Bir Göz Atın
Ne öğreneceksin:
- Java Yığın Koleksiyonu
- Sonuç
Java Yığın Koleksiyonu
Yığının resimli bir temsili aşağıda verilmiştir.
Yukarıdaki gösterim dizisinde gösterildiği gibi, başlangıçta yığın boştur ve yığının tepesi -1'e ayarlanmıştır. Ardından, yığına bir öğe eklemek için kullanılan bir 'itme' işlemini başlatırız.
Yani ikinci gösterimde, eleman 10'u itiyoruz. Bu noktada, üst kısım artırılıyor. Öğeyi (20) tekrar istifte iteriz, böylece üst kısmı daha da artırırız.
Son sunumda, bir “pop” işlemi başlatıyoruz. Bu işlem, yığından bir öğeyi çıkarmak için kullanılır. Şu anda 'Üst' olarak gösterilen bir öğe, pop işlemiyle kaldırılır.
Yığın veri yapısı aşağıdaki işlemleri destekler:
- İt: Yığına bir öğe ekler. Sonuç olarak, tepenin değeri artırılır.
- Pop: Yığından bir öğe kaldırılır. Pop işleminden sonra topun değeri azaltılır.
- Dikizlemek: Bu işlem, bir öğeyi aramak veya aramak için kullanılır. Tepenin değeri değiştirilmez.
Yığına eleman eklemek / kaldırmak için bir son olarak kullanılan yığının tepesi de belirli bir anda çeşitli değerlere sahip olabilir. Yığının boyutu N ise, o zaman yığının tepesi, yığının hangi durumda olduğuna bağlı olarak farklı koşullarda aşağıdaki değerlere sahip olacaktır.
Yığının durumu | En yüksek değer |
---|---|
Yığın Boş | -1 |
Yığındaki bir öğe | 0 |
Yığın dolu | N-1 |
Taşma (elemanlar> N) | N |
Java'da Yığın Sınıfı
Java Collection Framework, 'Yığın' adlı bir sınıf sağlar. Bu Stack sınıfı, Vector sınıfını genişletir ve Stack veri yapısının işlevselliğini uygular.
Aşağıdaki diyagram, Stack sınıfının hiyerarşisini gösterir.
Yukarıdaki diyagramda gösterildiği gibi, Stack sınıfı, sırasıyla Koleksiyonun Liste Arayüzünü uygulayan Vector sınıfını miras alır.
Stack sınıfı, java.util paketinin bir parçasıdır. Stack sınıfını programa dahil etmek için import ifadesini aşağıdaki gibi kullanabiliriz.
import java.util.*;
veya
import java.util.Stack;
Java'da Yığın Oluşturun
Stack sınıfını içe aktardıktan sonra, aşağıda gösterildiği gibi bir Stack nesnesi oluşturabiliriz:
Stack mystack = new Stack();
Ayrıca aşağıdaki gibi genel bir Stack sınıfı nesnesi türü oluşturabiliriz:
Stack myStack = new Stack;
Burada veri_türü, Java'daki herhangi bir geçerli veri türü olabilir.
Örneğin ,aşağıdaki Stack sınıfı nesnelerini oluşturabiliriz.
Stack stack_obj = new Stack(); Stack str_stack = new Stack();
Java'da Yığın API Yöntemleri
Stack sınıfı, Yığın içindeki verileri eklemek, kaldırmak ve aramak için yöntemler sağlar. Ayrıca yığının boş olup olmadığını kontrol etmek için bir yöntem sağlar. Bu yöntemleri aşağıdaki bölümde tartışacağız.
Yığın İtme İşlemi
İtme işlemi, öğeleri yığına itmek veya eklemek için kullanılır. Bir yığın örneği oluşturduktan sonra, yığın nesne türünün öğelerini yığına eklemek için push işlemini kullanabiliriz.
Aşağıdaki kod parçası, değerlerle bir tamsayı yığınını başlatmak için kullanılır.
Stack myStack = new Stack(); myStack.push(10); myStack.push(15); myStack.push(20);
Yukarıdaki kod yürütme parçasının bir sonucu olarak elde edilen ilk yığın aşağıda gösterilmiştir:
youtube videolarını indirmek için en iyi program
Aşağıda gösterildiği gibi başka bir push () işlemi gerçekleştirirsek,
push(25);
Ortaya çıkan yığın şöyle olacaktır:
Yığın Açma İşlemi
“Pop” işlemini kullanarak elemanı yığından kaldırabiliriz. Şu anda Üst tarafından işaret edilen öğe yığından fırlatılır.
Aşağıdaki kod parçası bunu başarır.
Stack intStack = new Stack(); intStack.push(100); intStack.push(200); int val = intStack.pop();
Val değişkeni, yığına en son itilen öğe olduğu için 200 değerini içerecektir.
Push ve pop işlemi için yığın gösterimi aşağıdaki gibidir:
Stack Peek Operasyonu
Göz atma işlemi, öğeyi kaldırmadan yığının En Üstünü döndürür. Yukarıdaki yığın örneğinde, 'intStack.peek ()' 200 değerini döndürecektir.
Yığın isEmpty İşlemi
Stack sınıfının isEmpty () işlemi, yığın nesnesinin boş olup olmadığını kontrol eder. Yığın içinde öğe yoksa doğru döndürür, aksi takdirde yanlış döndürür.
Yığın Arama İşlemi
Search () işlemini kullanarak yığındaki bir elemanı arayabiliriz. Search () işlemi, aranan öğenin dizinini döndürür. Bu indeks yığının en üstünden sayılır.
Stack intStack = new Stack (); intStack.push (100); intStack.push (200); int index = inStack.search(100); //index will have the value 2.
Yığın Boyutu
Stack nesnesinin boyutu, java.util.Stack.size () yöntem. Yığındaki toplam öğe sayısını döndürür.
Aşağıdaki örnek, yığın boyutunu yazdırır.
Stack myStack = new Stack(); myStack.push(100); myStack.push(200); myStack.push(300); System.out.println('Stack size:' + myStack.size()); //Stack size: 3
Yığın Elemanlarını Yazdır / Yinele
Yığın için bir yineleyici bildirebilir ve ardından bu yineleyiciyi kullanarak tüm Yığın içinden geçebiliriz. Bu şekilde her bir yığın elemanını tek tek ziyaret edip yazdırabiliriz.
Aşağıdaki program, bir yineleyici kullanarak Yığın yinelemesinin yolunu göstermektedir.
import java.util.*; public class Main { public static void main(String() args) { //declare and initialize a stack object Stack stack = new Stack(); stack.push('PUNE'); stack.push('MUMBAI'); stack.push('NASHIK'); System.out.println('Stack elements:'); //get an iterator for the stack Iterator iterator = stack.iterator(); //traverse the stack using iterator in a loop and print each element while(iterator.hasNext()){ System.out.print(iterator.next() + ' '); } } }
Çıktı:
Yığın öğeleri:
PUNE MUMBAI NASHIK
Java 8 Kullanarak Yığın
Stream APIs, forEach ve forEachRemaining yapıları gibi Java 8 özelliklerini kullanarak yığın öğelerini de yazdırabilir veya bunlarda geçiş yapabiliriz.
Aşağıdaki program, yığın içinde geçiş yapmak için Java 8 yapılarının kullanımını göstermektedir.
import java.util.*; import java.util.stream.*; public class Main { public static void main(String() args) { //declare and initialize a stack object Stack stack = new Stack(); stack.push('PUNE'); stack.push('MUMBAI'); stack.push('NASHIK'); System.out.println('Stack elements using Java 8 forEach:'); //get a stream for the stack Stream stream = stack.stream(); //traverse though each stream object using forEach construct of Java 8 stream.forEach((element) -> { System.out.print(element + ' '); // print element }); System.out.println('
Stack elements using Java 8 forEachRemaining:'); //define an iterator for the stack Iterator stackIterator = stack.iterator(); //use forEachRemaining construct to print each stack element stackIterator.forEachRemaining(val -> { System.out.print(val + ' '); }); } }
Çıktı:
Java 8 forEach kullanarak öğeleri yığınlayın:
PUNE MUMBAI NASHIK
Öğeleri Java 8 forEachRemaining kullanarak yığınlayın:
PUNE MUMBAI NASHIK
Java'da Yığın Uygulaması
Aşağıdaki program, çeşitli yığın işlemlerini gösteren ayrıntılı yığını uygular.
import java.util.Stack; public class Main { public static void main(String a()){ //declare a stack object Stack stack = new Stack(); //print initial stack System.out.println('Initial stack : ' + stack); //isEmpty () System.out.println('Is stack Empty? : ' + stack.isEmpty()); //push () operation stack.push(10); stack.push(20); stack.push(30); stack.push(40); //print non-empty stack System.out.println('Stack after push operation: ' + stack); //pop () operation System.out.println('Element popped out:' + stack.pop()); System.out.println('Stack after Pop Operation : ' + stack); //search () operation System.out.println('Element 10 found at position: ' + stack.search(10)); System.out.println('Is Stack empty? : ' + stack.isEmpty()); } }
Çıktı:
İlk yığın: ()
Yığın Boş mu? : doğru
İtme işleminden sonra yığın: (10, 20, 30, 40)
Eleman dışarı fırladı: 40
Pop İşleminden Sonra Yığın: (10, 20, 30)
Öğe 10 şu konumda bulundu: 3
Yığın boş mu? : yanlış
Windows 10'da jar dosyaları nasıl çalıştırılır
Java'da Diziye Yığın
Yığın veri yapısı, Stack sınıfının 'toArray ()' yöntemi kullanılarak bir Array'e dönüştürülebilir.
Aşağıdaki program bu dönüşümü göstermektedir.
import java.util.*; import java.util.stream.*; public class Main { public static void main(String() args) { //declare and initialize a stack object Stack stack = new Stack(); stack.push('PUNE'); stack.push('MUMBAI'); stack.push('NASHIK'); //print the stack System.out.println('The Stack contents: ' + stack); // Create the array and use toArray() method to convert stack to array Object() strArray = stack.toArray(); //print the array System.out.println('The Array contents:'); for (int j = 0; j Çıktı:
Yığın içeriği: (PUNE, MUMBAI, NASHIK)
Dizi içeriği:
PUNE MUMBAI NASHIK

Dizi Kullanarak Java'da Yığın Uygulaması
Yığın, bir Dizi kullanılarak gerçeklenebilir. Tüm yığın işlemleri bir dizi kullanılarak gerçekleştirilir.
Aşağıdaki program, bir dizi kullanarak Stack uygulamasını göstermektedir.
import java.util.*; //Stack class class Stack { int top; //define top of stack int maxsize = 5; //max size of the stack int() stack_arry = new int(maxsize); //define array that will hold stack elements Stack(){ //stack constructor; initially top = -1 top = -1; } boolean isEmpty(){ //isEmpty () method return (top <0); } boolean push (int val){ //push () method if(top == maxsize-1) { System.out.println('Stack Overflow !!'); return false; } else { top++; stack_arry(top)=val; return true; } } boolean pop () { //pop () method if (top == -1) { System.out.println('Stack Underflow !!'); return false; } else { System.out.println('
Item popped: ' + stack_arry(top--)); return true; } } void display () { //print the stack elements System.out.println('Printing stack elements .....'); for(int i = top; i>=0;i--) { System.out.print(stack_arry(i) + ' '); } } } public class Main { public static void main(String() args) { //define a stack object Stack stck = new Stack(); System.out.println('Initial Stack Empty : ' + stck.isEmpty()); //push elements stck.push(10); stck.push(20); stck.push(30); stck.push(40); System.out.println('After Push Operation...'); //print the elements stck.display(); //pop two elements from stack stck.pop(); stck.pop(); System.out.println('After Pop Operation...'); //print the stack again stck.display(); } }
Çıktı:
İlk Yığın Boşaltma: doğru
İtme İşleminden Sonra…
Yığın öğeleri yazdırılıyor… ..
40 30 20 10
Öğe atıldı: 40
Öğe atıldı: 30
Pop İşleminden Sonra…
Yığın öğeleri yazdırılıyor… ..
20 10

Bağlantılı Listeyi Kullanarak Yığın Uygulaması
Yığın, tıpkı dizileri kullanarak yaptığımız gibi bağlantılı bir liste kullanılarak da uygulanabilir. Yığını uygulamak için bağlantılı bir liste kullanmanın bir avantajı, dinamik olarak büyüyebilmesi veya küçülebilmesidir. Dizilerdeki gibi maksimum boyut sınırlamasına ihtiyacımız yoktur.
Aşağıdaki program, yığın işlemlerini gerçekleştirmek için bağlantılı bir liste uygular.
import static java.lang.System.exit; // Stack class using LinkedList class Stack_Linkedlist { // Define Node of LinkedList private class Node { int data; // node data Node nlink; // Node link } // top of the stack Node top; // stack class Constructor Stack_Linkedlist() { this.top = null; } // push () operation public void push(int val) { // create a new node Node temp = new Node(); // checks if the stack is full if (temp == null) { System.out.print('
Stack Overflow'); return; } // assign val to node temp.data = val; // set top of the stack to node link temp.nlink = top; // update top top = temp; } // isEmpty () operation public boolean isEmpty() { return top == null; } // peek () operation public int peek() { // check if the stack is empty if (!isEmpty()) { return top.data; } else { System.out.println('Stack is empty!'); return -1; } } // pop () operation public void pop() { // check if stack is out of elements if (top == null) { System.out.print('
Stack Underflow!!'); return; } // set top to point to next node top = (top).nlink; } //print stack contents public void display() { // check for stack underflow if (top == null) { System.out.printf('
Stack Underflow!!'); exit(1); } else { Node temp = top; System.out.println('Stack elements:'); while (temp != null) { // print node data System.out.print(temp.data + '->'); // assign temp link to temp temp = temp.nlink; } } } } public class Main { public static void main(String() args) { // Create a stack class object Stack_Linkedlist stack_obj = new Stack_Linkedlist(); // push values into the stack stack_obj.push(9); stack_obj.push(7); stack_obj.push(5); stack_obj.push(3); stack_obj.push(1); // print Stack elements stack_obj.display(); // print current stack top System.out.println('
Stack top : ' + stack_obj.peek()); // Pop elements twice System.out.println('Pop two elements'); stack_obj.pop(); stack_obj.pop(); // print Stack elements stack_obj.display(); // print new stack top System.out.println('
New Stack top:' + stack_obj.peek()); } }
Çıktı:
Yığın öğeleri:
1-> 3-> 5-> 7-> 9->
Yığın üst: 1
İki öğeyi patlat
Yığın öğeleri:
5-> 7-> 9->
Yeni Yığın üst: 5

Sıkça Sorulan Sorular
S # 1) Java'daki Yığınlar nedir?
Cevap: Yığın, öğeleri depolamak için bir LIFO (Son giren, İlk çıkar) veri yapısıdır. Yığın öğeleri, Yığının tepesi adı verilen bir uçtan yığına eklenir veya yığından kaldırılır.
Yığına bir elemanın eklenmesi, İtme işlemi kullanılarak yapılır. Öğelerin silinmesi pop işlemi kullanılarak yapılır. Java'da, Stack sınıfı kullanılarak bir yığın uygulanır.
S # 2) Stack Java'da Bir Koleksiyon mu?
tutulmada maven nasıl yapılandırılır
Cevap: Evet. Yığın, Java 1.0 ve sonrasında Collection API'de bulunan eski bir Java koleksiyonudur. Yığın, List arabiriminin Vector sınıfını miras alır.
S # 3) Stack bir Arayüz mü?
Cevap: Arabirim yığını, son giren ilk çıkar yapısını tanımlayan ve özyinelemeli sorunların durumunu depolamak için kullanılan bir arabirimdir.
S # 4) Yığınlar ne için kullanılır?
Cevap: Yığının ana uygulamaları aşağıdadır:
- İfade değerlendirme ve dönüştürmeler: Yığın, ifadeleri postfix, infix ve prefix'e dönüştürmek için kullanılır. Ayrıca bu ifadeleri değerlendirmek için de kullanılır.
- Yığın ayrıca sözdizimi ağaçlarını ayrıştırmak için de kullanılır.
- Yığın, bir ifadede parantezleri kontrol etmek için kullanılır.
- Yığın, geri izleme sorunlarını çözmek için kullanılır.
- İşlev çağrıları yığınlar kullanılarak değerlendirilir.
S # 5) Yığının Avantajları Nelerdir?
Cevap: Yığın üzerinde depolanan değişkenler, iade edildiğinde otomatik olarak yok edilir. Bellek ayrıldığında ve ayrıldığında yığınlar daha iyi bir seçimdir. Yığınlar ayrıca belleği temizler. Bunun dışında yığınlar, ifadeleri değerlendirmek ve ifadeleri ayrıştırmak için etkili bir şekilde kullanılabilir.
Sonuç
Bu, Java'daki Yığınlar hakkındaki eğiticimizi tamamlar. Yığın sınıfı, koleksiyon API'sinin bir parçasıdır ve push, pop, peek ve arama işlemlerini destekler. Öğeler yığına yalnızca bir uçta eklenir veya yığından çıkarılır. Bu uca yığının tepesi denir.
Bu eğitimde, yığın sınıfı tarafından desteklenen tüm yöntemleri gördük. Ayrıca, dizileri ve bağlantılı listeleri kullanarak yığını gerçekleştirdik.
Sonraki eğitimlerimizde diğer koleksiyon sınıflarına devam edeceğiz.
=> Kolay Java Eğitim Serisini Okuyun
Önerilen Kaynaklar
- Örneklerle Java Yansıtma Eğitimi
- Örneklerle Java Tarayıcı Sınıfı Eğitimi
- Java HashTable Nedir - HashTable Uygulaması ve Örneği
- Java Vektör Nedir | Örneklerle Java Vektör Sınıfı Eğitimi
- Java Dizi Sınıfı Eğitimi - Örneklerle java.util.Arrays Sınıfı
- Java Temelleri: Java Sözdizimi, Java Sınıfı ve Temel Java Kavramları
- Java'da LinkedHashMap - LinkedHashMap Örneği ve Uygulaması
- Java SWING Eğitimi: Konteyner, Bileşenler ve Olay İşleme