logo

Java Yığını

yığın nesnelerin koleksiyonunu depolamak için kullanılan doğrusal bir veri yapısıdır. dayanmaktadır Son Giren İlk Çıkar (LIFO). Java koleksiyonu Framework, nesnelerin koleksiyonunu depolamak için birçok arayüz ve sınıf sağlar. Bunlardan biri de Yığın sınıfı push, pop, search vb. gibi farklı işlemler sağlayan.

Bu bölümde şunları tartışacağız: Java Yığın sınıfı , onun yöntemler, Ve uygulamak yığın veri yapısını bir Java programı . Ancak Java Yığın sınıfına geçmeden önce yığının nasıl çalıştığına dair hızlı bir bakış açısına sahip olun.

Yığın veri yapısı en önemli iki işleme sahiptir: itmek Ve pop . İtme işlemi yığına bir öğe ekler ve pop işlemi, yığının en üstünden bir öğeyi kaldırır. Stack üzerinde nasıl çalıştıklarını görelim.

Java Yığını

Sırasıyla 20, 13, 89, 90, 11, 45, 18'i yığına itelim.

Java Yığını

18, 45 ve 11'i yığından kaldıralım (pop).

Java Yığını

Boş Yığın: Yığın hiçbir öğeye sahip değilse, bir olarak bilinir. boş yığın . Yığın boş olduğunda en üstteki değişkenin değeri -1'dir.

Java Yığını

Bir öğeyi yığının içine ittiğimizde üst kısım 1 arttı . Aşağıdaki şekilde,

  • 12'ye basın, üst=0
  • 6'ya basın, üst=1
  • 9'a basın, üst=2
Java Yığını

Yığından bir öğeyi çıkardığımızda top değeri şu şekildedir: 1 azaldı . Aşağıdaki şekilde 9'u çıkardık.

Java Yığını

Aşağıdaki tabloda üstteki farklı değerler gösterilmektedir.

yıldız desenini yazdır
Java Yığını

Java Yığın Sınıfı

Java'da, Yığın genişleten Koleksiyon çerçevesi kapsamına giren bir sınıftır. Vektör sınıf. Aynı zamanda arayüzleri de uygular Liste, Koleksiyon, Yinelenebilir, Klonlanabilir, Serileştirilebilir. LIFO nesne yığınını temsil eder. Stack sınıfını kullanmadan önce, içe aktarmamız gerekir.java.utilpaket. Aşağıda gösterildiği gibi Koleksiyonlar çerçeve hiyerarşisinde düzenlenen yığın sınıfı.

Java Yığını

Yığın Sınıfı Oluşturucusu

Stack sınıfı yalnızca şunları içerir: varsayılan kurucu bu boş bir yığın oluşturur.

 public Stack() 

Yığın Oluşturma

Bir yığın oluşturmak istiyorsak, öncelikle içe aktarın.java.utilpaketleyin ve Stack sınıfının bir nesnesini oluşturun.

 Stack stk = new Stack(); 

Veya

 Stack stk = new Stack(); 

Tür, Tamsayı, Dize vb. gibi yığın türünü belirtir.

alfabe numarası nedir

Yığın Sınıfının Yöntemleri

Stack üzerinde push, pop, peek ve search işlemlerini gerçekleştirebiliyoruz. Java Stack sınıfı bu işlemleri gerçekleştirmek için temel olarak beş yöntem sağlar. Bununla birlikte, aynı zamanda tüm yöntemleri de sağlar. Java Vektör sınıfı .

Yöntem Değiştirici ve Tür Yöntem Açıklama
boş() boolean Yöntem yığının boş olup olmadığını kontrol eder.
itin(E öğesi) VE Yöntem, bir öğeyi yığının üstüne iter (ekler).
pop() VE Yöntem, yığının en üstünden bir öğeyi kaldırır ve bu işlevin değeriyle aynı öğeyi döndürür.
dikizlemek() VE Yöntem, yığının en üst elemanını kaldırmadan bakar.
arama (Nesne o) int Yöntem belirtilen nesneyi arar ve nesnenin konumunu döndürür.

Yığın Sınıfı empty() Yöntemi

boş() Stack sınıfının yöntemi, yığının boş olup olmadığını kontrol eder. Yığın boşsa true değerini döndürür, aksi takdirde false değerini döndürür. Vector sınıfının isEmpty() metodunu da kullanabiliriz.

Sözdizimi

 public boolean empty() 

İadeler: Yığın boşsa yöntem true değerini döndürür, aksi takdirde false değerini döndürür.

Aşağıdaki örnekte Stack sınıfının bir örneğini oluşturduk. Bundan sonra empty() yöntemini iki kez çağırdık. İlk kez geri dönüyor doğru çünkü yığına herhangi bir öğe itmedik. Daha sonra elemanları yığına ittik. Tekrar şunu döndüren empty() yöntemini çağırdık YANLIŞ çünkü yığın boş değil.

StackEmptyMethodExample.java

 import java.util.Stack; public class StackEmptyMethodExample { public static void main(String[] args) { //creating an instance of Stack class Stack stk= new Stack(); // checking stack is empty or not boolean result = stk.empty(); System.out.println('Is the stack empty? ' + result); // pushing elements into stack stk.push(78); stk.push(113); stk.push(90); stk.push(120); //prints elements of the stack System.out.println('Elements in Stack: ' + stk); result = stk.empty(); System.out.println('Is the stack empty? ' + result); } } 

Çıktı:

 Is the stack empty? true Elements in Stack: [78, 113, 90, 120] Is the stack empty? false 

Yığın Sınıfı push() Yöntemi

Yöntem, yığının en üstüne bir öğe ekler. Vector sınıfının addElement(item) yöntemiyle aynı şekilde çalışır. Bir parametre geçirir öğe yığının içine itilecek.

Sözdizimi

 public E push(E item) 

Parametre: Yığının en üstüne itilecek bir öğe.

İadeler: Yöntem, parametre olarak ilettiğimiz argümanı döndürür.

Yığın Sınıfı pop() Yöntemi

Yöntem, yığının en üstündeki bir nesneyi kaldırır ve aynı nesneyi döndürür. Fırlatıyor EmptyStackException yığın boşsa.

Sözdizimi

 public E pop() 

İadeler: Yığının en üstünde bulunan bir nesneyi döndürür.

Stack'ı bir Java programında uygulayalım ve push ve pop işlemlerini gerçekleştirelim.

StackPushPopExample.java

 import java.util.*; public class StackPushPopExample { public static void main(String args[]) { //creating an object of Stack class Stack stk = new Stack(); System.out.println('stack: ' + stk); //pushing elements into the stack pushelmnt(stk, 20); pushelmnt(stk, 13); pushelmnt(stk, 89); pushelmnt(stk, 90); pushelmnt(stk, 11); pushelmnt(stk, 45); pushelmnt(stk, 18); //popping elements from the stack popelmnt(stk); popelmnt(stk); //throws exception if the stack is empty try { popelmnt(stk); } catch (EmptyStackException e) { System.out.println('empty stack'); } } //performing push operation static void pushelmnt(Stack stk, int x) { //invoking push() method stk.push(new Integer(x)); System.out.println('push -> ' + x); //prints modified stack System.out.println('stack: ' + stk); } //performing pop operation static void popelmnt(Stack stk) { System.out.print('pop -> '); //invoking pop() method Integer x = (Integer) stk.pop(); System.out.println(x); //prints modified stack System.out.println('stack: ' + stk); } } 

Çıktı:

 stack: [] push -> 20 stack: [20] push -> 13 stack: [20, 13] push -> 89 stack: [20, 13, 89] push -> 90 stack: [20, 13, 89, 90] push -> 11 stack: [20, 13, 89, 90, 11] push -> 45 stack: [20, 13, 89, 90, 11, 45] push -> 18 stack: [20, 13, 89, 90, 11, 45, 18] pop -> 18 stack: [20, 13, 89, 90, 11, 45] pop -> 45 stack: [20, 13, 89, 90, 11] pop -> 11 stack: [20, 13, 89, 90] 

Stack Class peek() Yöntemi

Yığının en üstünde bulunan öğeye bakar. Ayrıca atar EmptyStackException yığın boşsa.

Sözdizimi

 public E peek() 

İadeler: Yığının en üstteki elemanlarını döndürür.

Peek() yönteminin bir örneğini görelim.

StackPeekMethodExample.java

udp protokolü
 import java.util.Stack; public class StackPeekMethodExample { public static void main(String[] args) { Stack stk= new Stack(); // pushing elements into Stack stk.push('Apple'); stk.push('Grapes'); stk.push('Mango'); stk.push('Orange'); System.out.println('Stack: ' + stk); // Access element from the top of the stack String fruits = stk.peek(); //prints stack System.out.println('Element at top: ' + fruits); } } 

Çıktı:

 Stack: [Apple, Grapes, Mango, Orange] Element at the top of the stack: Orange 

Yöntem, yığındaki nesneyi üstten arar. Aramak istediğimiz bir parametreyi ayrıştırır. Yığındaki nesnenin 1 tabanlı konumunu döndürür. Yığının en üstteki nesnesi 1 mesafede kabul edilir.

O'nun yığında aramak istediğimiz bir nesne olduğunu varsayalım. Yöntem, yığının tepesine en yakın oluşumun yığının tepesinden olan mesafesini döndürür. Kullanır eşittir() Yığındaki bir nesneyi arama yöntemi.

Sözdizimi

 public int search(Object o) 

Parametre: o aranmak istenen nesnedir.

İadeler: Nesnenin konumunu yığının en üstünden döndürür. -1 değerini döndürmesi nesnenin yığında olmadığı anlamına gelir.

Search() yönteminin bir örneğini görelim.

npm önbellek temizleme

StackSearchMethodExample.java

 import java.util.Stack; public class StackSearchMethodExample { public static void main(String[] args) { Stack stk= new Stack(); //pushing elements into Stack stk.push('Mac Book'); stk.push('HP'); stk.push('DELL'); stk.push('Asus'); System.out.println('Stack: ' + stk); // Search an element int location = stk.search('HP'); System.out.println('Location of Dell: ' + location); } } 

Java Yığın İşlemleri

Yığın Boyutu

Ayrıca yığının boyutunu Vector sınıfının size() yöntemini kullanarak da bulabiliriz. Yığındaki toplam öğe sayısını (yığının boyutu) döndürür.

Sözdizimi

 public int size() 

Vector sınıfının size() yönteminin bir örneğini görelim.

StackSizeExample.java

 import java.util.Stack; public class StackSizeExample { public static void main (String[] args) { Stack stk = new Stack(); stk.push(22); stk.push(33); stk.push(44); stk.push(55); stk.push(66); // Checks the Stack is empty or not boolean rslt=stk.empty(); System.out.println('Is the stack empty or not? ' +rslt); // Find the size of the Stack int x=stk.size(); System.out.println('The stack size is: '+x); } } 

Çıktı:

 Is the stack empty or not? false The stack size is: 5 

Öğeleri Yinele

Yineleme, yığının elemanlarını getirmek anlamına gelir. Yığının elemanlarını aşağıdaki üç farklı yöntemi kullanarak getirebiliriz:

  • Kullanma yineleyici() Yöntem
  • Kullanma her biri için() Yöntem
  • Kullanma listIterator() Yöntem

iterator() Yöntemini Kullanma

Iterator arayüzünün yöntemidir. Yığındaki öğeler üzerinde bir yineleyici döndürür. iterator() yöntemini kullanmadan önce içe aktarınjava.util.Iteratorpaket.

Sözdizimi

 Iterator iterator() 

Yığın üzerinde bir yineleme gerçekleştirelim.

StackIterationExample1.java

 import java.util.Iterator; import java.util.Stack; public class StackIterationExample1 { public static void main (String[] args) { //creating an object of Stack class Stack stk = new Stack(); //pushing elements into stack stk.push('BMW'); stk.push('Audi'); stk.push('Ferrari'); stk.push('Bugatti'); stk.push('Jaguar'); //iteration over the stack Iterator iterator = stk.iterator(); while(iterator.hasNext()) { Object values = iterator.next(); System.out.println(values); } } } 

Çıktı:

 BMW Audi Ferrari Bugatti Jaguar 

forEach() Yöntemini Kullanma

Java, öğeler üzerinde yineleme yapmak için bir forEach() yöntemi sağlar. Yöntem şu şekilde tanımlanmıştır: Tekrarlanabilir Ve Aktarım arayüz.

Sözdizimi

 default void forEach(Consumeraction) 

ForEach() yöntemini kullanarak yığın üzerinde yineleme yapalım.

StackIterationExample2.java

 import java.util.*; public class StackIterationExample2 { public static void main (String[] args) { //creating an instance of Stack class Stack stk = new Stack(); //pushing elements into stack stk.push(119); stk.push(203); stk.push(988); System.out.println('Iteration over the stack using forEach() Method:'); //invoking forEach() method for iteration over the stack stk.forEach(n -> { System.out.println(n); }); } } 

Çıktı:

 Iteration over the stack using forEach() Method: 119 203 988 

listIterator() Yöntemini Kullanma

Bu yöntem, listede belirtilen konumdan başlayarak, söz konusu listedeki öğeler üzerinde (sırayla) bir liste yineleyicisi döndürür. Yığını yukarıdan aşağıya doğru yineler.

Sözdizimi

pyspark
 ListIterator listIterator(int index) 

Parametre: Yöntem, adlı bir parametreyi ayrıştırır. indeks.

İadeler: Bu yöntem, öğeler üzerinde sırayla bir liste yineleyici döndürür.

İstisna: Fırlatıyor IndexOutOfBoundsException indeks aralık dışındaysa.

ListIterator() yöntemini kullanarak yığın üzerinde yineleme yapalım.

StackIterationExample3.java

 import java.util.Iterator; import java.util.ListIterator; import java.util.Stack; public class StackIterationExample3 { public static void main (String[] args) { Stack stk = new Stack(); stk.push(119); stk.push(203); stk.push(988); ListIterator ListIterator = stk.listIterator(stk.size()); System.out.println('Iteration over the Stack from top to bottom:'); while (ListIterator.hasPrevious()) { Integer avg = ListIterator.previous(); System.out.println(avg); } } } 

Çıktı:

 Iteration over the Stack from top to bottom: 988 203 119