logo

Java kaudze

The kaudze ir lineāra datu struktūra, ko izmanto objektu kolekcijas glabāšanai. Tas ir balstīts uz Last-In-First-Out (LIFO). Java kolekcija ietvars nodrošina daudzas saskarnes un klases objektu kolekcijas glabāšanai. Viens no tiem ir Stack klase kas nodrošina dažādas darbības, piemēram, push, pop, meklēšana utt.

Šajā sadaļā mēs apspriedīsim Java Stack klase , tā metodes, un īstenot steka datu struktūra a Java programma . Bet pirms pārejas uz Java Stack klasi ātri apskatiet, kā steka darbojas.

Stack datu struktūrai ir divas vissvarīgākās darbības, kas ir spiediet un pop . Veicot nosūtīšanas darbību, elements tiek ievietots kaudzē, un pop-operācija noņem elementu no steka augšdaļas. Apskatīsim, kā viņi strādā uz kaudzes.

Java kaudze

Iegrūdīsim kaudzē attiecīgi 20, 13, 89, 90, 11, 45, 18.

Java kaudze

Noņemsim (pop) 18, 45 un 11 no kaudzes.

Java kaudze

Tukša kaudze: Ja kaudzītei nav elementa, to sauc par an tukša kaudze . Kad kaudze ir tukša, augšējā mainīgā vērtība ir -1.

Java kaudze

Kad mēs iespiežam elementu kaudzē, augšdaļa ir palielināts par 1 . Nākamajā attēlā

  • Spiediet 12, augšā = 0
  • Spiediet 6, augšā = 1
  • Spiediet 9, augšā = 2
Java kaudze

Kad mēs izvelkam elementu no kaudzes, top vērtība ir samazinājās par 1 . Nākamajā attēlā mēs esam parādījuši 9.

Java kaudze

Nākamajā tabulā parādītas dažādas augšdaļas vērtības.

Java kaudze

Java Stack klase

Java valodā, Kaudze ir klase, kas ietilpst kolekcijas sistēmā, kas paplašina Vektors klasē. Tas arī ievieš saskarnes Saraksts, Kolekcija, Atkārtojams, Klonējams, Serializējams. Tas attēlo LIFO objektu kaudzi. Pirms klases Stack izmantošanas mums ir jāimportējava.utiliepakojums. Steka klase ir sakārtota kolekciju ietvara hierarhijā, kā parādīts tālāk.

Java kaudze

Stack klases konstruktors

Klase Stack satur tikai noklusējuma konstruktors kas rada tukšu kaudzi.

 public Stack() 

Stack izveidošana

Ja vēlamies izveidot steku, vispirms importējietjava.utilpakotni un izveidot Stack klases objektu.

 Stack stk = new Stack(); 

Or

 Stack stk = new Stack(); 

Kur tips apzīmē kaudzes veidu, piemēram, vesels skaitlis, virkne utt.

Stack klases metodes

Mēs varam veikt push, pop, peek un meklēšanas operācijas uz steka. Java Stack klase nodrošina galvenokārt piecas metodes šo darbību veikšanai. Līdztekus tam, tas arī nodrošina visas metodes Java vektoru klase .

Metode Modifikators un tips Metodes apraksts
tukšs () Būla Metode pārbauda, ​​vai kaudze ir tukša vai nav.
push (E vienums) UN Metode nospiež (ievieto) elementu kaudzes augšpusē.
pop () UN Metode noņem elementu no kaudzes augšdaļas un atgriež to pašu elementu kā šīs funkcijas vērtību.
palūrēt () UN Metode aplūko kaudzes augšējo elementu, to nenoņemot.
meklēt (Object o) starpt Metode meklē norādīto objektu un atgriež objekta pozīciju.

Kravas klase tukša() Metode

The tukšs () Klases Stack metode pārbaudiet, vai kaudze ir tukša vai nav. Ja steks ir tukšs, tas atgriež patiesu, pretējā gadījumā atgriež false. Varam izmantot arī Vector klases metodi isEmpty().

Sintakse

 public boolean empty() 

Atgriež: Metode atgriež vērtību True, ja steka ir tukša, pretējā gadījumā atgriež false.

Nākamajā piemērā mēs esam izveidojuši klases Stack gadījumu. Pēc tam mēs divas reizes esam izsaukuši tukšo () metodi. Pirmo reizi tas atgriežas taisnība jo mēs neesam iespieduši nevienu elementu kaudzē. Pēc tam mēs esam ievietojuši elementus kaudzē. Mēs atkal esam izsaukuši tukšo () metodi, kas atgriežas viltus jo kaudze nav tukša.

java ir vienāds

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); } } 

Izvade:

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

Stack Class push() metode

Izmantojot šo metodi, vienums tiek ievietots kaudzes augšpusē. Tā darbojas tāpat kā Vector klases metode addElement(item). Tas nodod parametru lieta jāiestumj kaudzē.

Sintakse

 public E push(E item) 

Parametrs: Vienums, kas jāuzstumj kaudzes augšpusē.

Atgriež: Metode atgriež argumentu, kuru esam nodevuši kā parametru.

Stack Class pop() metode

Metode noņem objektu kaudzes augšpusē un atgriež to pašu objektu. Tas met EmptyStackException ja kaudze ir tukša.

Sintakse

 public E pop() 

Atgriež: Tas atgriež objektu, kas atrodas kaudzes augšpusē.

Ieviesīsim steku Java programmā un veiksim push un pop darbības.

pārveidotāja virkne līdz šim

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); } } 

Izvade:

 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() metode

Tas aplūko elementu, kas atrodas kaudzes augšdaļā. Tā arī met EmptyStackException ja kaudze ir tukša.

Sintakse

 public E peek() 

Atgriež: Tas atgriež kaudzes augšējos elementus.

Apskatīsim peek() metodes piemēru.

StackPeekMethodExample.java

 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); } } 

Izvade:

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

Metode meklē objektu kaudzē no augšas. Tas parsē parametru, kuru mēs vēlamies meklēt. Tas atgriež uz 1 balstītu objekta atrašanās vietu kaudzē. Kaudzītes augšējais objekts tiek uzskatīts par 1. attālumu.

Pieņemsim, ka o ir objekts kaudzē, kuru mēs vēlamies meklēt. Metode atgriež attālumu no steka augšdaļas, kas atrodas vistuvāk steka augšai. Tā izmanto vienāds () metode, lai meklētu objektu kaudzē.

Sintakse

 public int search(Object o) 

Parametrs: o ir vēlamais objekts, kas jāmeklē.

Atgriež: Tas atgriež objekta atrašanās vietu no kaudzes augšdaļas. Ja tas atgriež -1, tas nozīmē, ka objekts neatrodas kaudzē.

Apskatīsim meklēšanas () metodes piemēru.

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 Stack darbības

Kaudzītes lielums

Mēs varam arī atrast kaudzes izmēru, izmantojot Vector klases metodi size(). Tas atgriež kopējo elementu skaitu (steka lielumu) kaudzē.

Sintakse

 public int size() 

Apskatīsim Vector klases metodes size() piemēru.

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); } } 

Izvade:

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

Atkārtojiet elementus

Atkārtot nozīmē iegūt steka elementus. Mēs varam ienest kaudzes elementus, izmantojot trīs dažādas metodes:

  • Izmantojot iterators () Metode
  • Izmantojot katram() Metode
  • Izmantojot listIterator() Metode

Izmantojot iterator() metodi

Tā ir Iterator saskarnes metode. Tas atgriež iteratoru virs steka elementiem. Pirms iterator() metodes izmantošanas importējietjava.util.Iteratoriepakojums.

Sintakse

 Iterator iterator() 

Veiksim iterāciju pa kaudzi.

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); } } } 

Izvade:

 BMW Audi Ferrari Bugatti Jaguar 

ForEach() metodes izmantošana

Java nodrošina metodi forEach() elementu atkārtošanai. Metode ir definēta Atkārtojams un Straume saskarne.

bash sadalīta virkne ar atdalītāju

Sintakse

 default void forEach(Consumeraction) 

Atkārtosim steku, izmantojot metodi forEach().

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); }); } } 

Izvade:

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

Izmantojot listIterator() metodi

Šī metode atgriež saraksta iteratoru virs elementiem minētajā sarakstā (secībā), sākot no norādītās pozīcijas sarakstā. Tas atkārto kaudzi no augšas uz leju.

Sintakse

 ListIterator listIterator(int index) 

Parametrs: Metode parsē parametru ar nosaukumu rādītājs.

Atgriež: Šī metode atgriež saraksta iteratoru virs elementiem secīgi.

Izņēmums: Tas met IndexOutOfBoundsException ja indekss ir ārpus diapazona.

Atkārtosim steku, izmantojot metodi listIterator().

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); } } } 

Izvade:

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