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.
Iegrūdīsim kaudzē attiecīgi 20, 13, 89, 90, 11, 45, 18.
Noņemsim (pop) 18, 45 un 11 no kaudzes.
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.
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
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.
Nākamajā tabulā parādītas dažādas augšdaļas vērtības.
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.
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
Stack Class search() Metode
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