Тхе гомила је линеарна структура података која се користи за складиштење колекције објеката. Заснован је на Ласт-Ин-Фирст-Оут (ЛИФО). Јава колекција фрамеворк пружа много интерфејса и класа за чување колекције објеката. Један од њих је Стацк цласс који пружа различите операције као што су пусх, поп, сеарцх, итд.
У овом одељку ћемо разговарати о Јава Стацк класа , његово методе, и имплементирати структура података стека у а Јава програм . Али пре него што пређете на класу Јава Стацк, брзо погледајте како стек функционише.
Структура података стека има две најважније операције које су гурати и поп . Операција гурања умеће елемент у стек, а операција искапања уклања елемент са врха стека. Хајде да видимо како раде на стеку.
Хајде да гурнемо 20, 13, 89, 90, 11, 45, 18, респективно у стог.
Уклонимо (поп) 18, 45 и 11 из стека.
Празан стог: Ако стек нема елемент, познат је као ан празан стог . Када је стек празан, вредност горње променљиве је -1.
Када гурнемо елемент у стек, врх је повећана за 1 . На следећој слици,
- Гурните 12, врх=0
- Гурните 6, врх=1
- Гурните 9, врх=2
Када избацимо елемент из стека, вредност топ је смањен за 1 . На следећој слици имамо 9.
Следећа табела приказује различите вредности врха.
Јава Стацк Цласс
у Јави, Гомила је класа која потпада под оквир колекције који проширује Вецтор класа. Такође имплементира интерфејсе Листа, Колекција, Итерабле, Цлонеабле, Сериализабле. Представља ЛИФО стог објеката. Пре употребе класе Стацк, морамо да увеземојава.утилпакет. Класа стека распоређена у хијерархији оквира Цоллецтионс, као што је приказано испод.
Конструктор класа стека
Класа Стацк садржи само подразумевани конструктор то ствара празан стек.
public Stack()
Креирање стека
Ако желимо да креирамо стек, прво увеземојава.утилпакет и креирање објекта класе Стацк.
Stack stk = new Stack();
Ор
Stack stk = new Stack();
Где тип означава тип стека као што је Интегер, Стринг, итд.
Методе класе Стацк
Можемо да извршимо пусх, поп, пеек и сеарцх операције на стеку. Јава Стацк класа пружа углавном пет метода за извођење ових операција. Уз ово, он такође пружа све методе Јава Вецтор цласс .
Метод | Модификатор и тип | Опис методе |
---|---|---|
празно() | боолеан | Метод проверава да ли је стек празан или не. |
гурати (Е ставка) | И | Метода гура (убацује) елемент на врх стека. |
поп() | И | Метод уклања елемент са врха стека и враћа исти елемент као вредност те функције. |
завирити () | И | Метода гледа на горњи елемент стека без уклањања. |
тражи (Објекат о) | инт | Метод претражује наведени објекат и враћа позицију објекта. |
Метода Стацк Цласс емпти().
Тхе празно() метод класе Стацк провери да ли је стек празан или не. Ако је стек празан, враћа тачно, у супротном враћа нетачно. Такође можемо користити метод исЕмпти() класе Вецтор.
Синтакса
public boolean empty()
враћа: Метод враћа труе ако је стек празан, иначе враћа фалсе.
јава сортирање мехурића
У следећем примеру, креирали смо инстанцу класе Стацк. Након тога, два пута смо позвали метод емпти(). Први пут се враћа истина јер нисмо гурнули ниједан елемент у стек. Након тога, гурнули смо елементе у стек. Поново смо позвали метод емпти() који се враћа лажно јер стог није празан.
СтацкЕмптиМетходЕкампле.јава
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); } }
Излаз:
Is the stack empty? true Elements in Stack: [78, 113, 90, 120] Is the stack empty? false
Стацк Цласс пусх() Метод
Метода убацује ставку на врх хрпе. Ради исто као и метод аддЕлемент(итем) методе класе Вецтор. Он прослеђује параметар предмет да се гурне у стог.
Синтакса
public E push(E item)
Параметар: Ставка коју треба гурнути на врх гомиле.
враћа: Метод враћа аргумент који смо проследили као параметар.
Метод стацк класе поп().
Метод уклања објекат на врху стека и враћа исти објекат. То баца ЕмптиСтацкЕкцептион ако је стог празан.
Синтакса
јава непроменљива листа
public E pop()
враћа: Враћа објекат који се налази на врху стека.
Хајде да имплементирамо стек у Јава програм и извршимо пусх и поп операције.
СтацкПусхПопЕкампле.јава
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); } }
Излаз:
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]
Стацк Цласс пеек() Метод
Гледа на елемент који је на врху у стеку. Такође баца ЕмптиСтацкЕкцептион ако је стог празан.
Синтакса
public E peek()
враћа: Враћа горње елементе стека.
Погледајмо пример методе пеек().
СтацкПеекМетходЕкампле.јава
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); } }
Излаз:
Stack: [Apple, Grapes, Mango, Orange] Element at the top of the stack: Orange
Стацк Цласс сеарцх() Метод
Метод претражује објекат у стеку одозго. Он анализира параметар који желимо да тражимо. Враћа локацију објекта у стеку засновану на 1. Највиши објекат гомиле се сматра на удаљености 1.
Претпоставимо да је о објекат у стеку који желимо да тражимо. Метод враћа растојање од врха стека појаве најближе врху стека. Користи једнако() метод за претрагу објекта у стеку.
Синтакса
public int search(Object o)
Параметар: о је жељени објекат који се тражи.
враћа: Враћа локацију објекта са врха стека. Ако врати -1, то значи да објекат није на стеку.
Погледајмо пример методе сеарцх().
СтацкСеарцхМетходЕкампле.јава
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); } }
Јава Стацк Операције
Величина стека
Такође можемо да пронађемо величину стека помоћу методе сизе() класе Вецтор. Враћа укупан број елемената (величина стека) у стеку.
Синтакса
public int size()
Погледајмо пример методе сизе() класе Вецтор.
СтацкСизеЕкампле.јава
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); } }
Излаз:
Is the stack empty or not? false The stack size is: 5
Итерате Елементс
Итерација значи дохватити елементе стека. Елементе стека можемо преузети помоћу три различите методе:
- Користећи итератор() Метод
- Користећи за сваки() Метод
- Користећи листИтератор() Метод
Коришћење методе итератор().
То је метод интерфејса Итератора. Враћа итератор преко елемената у стеку. Пре употребе методе итератор() увезитејава.утил.Итераторпакет.
Синтакса
Iterator iterator()
Хајде да извршимо итерацију преко стека.
СтацкИтератионЕкампле1.јава
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); } } }
Излаз:
BMW Audi Ferrari Bugatti Jaguar
Коришћење методе форЕацх().
Јава обезбеђује метод форЕацх() за понављање елемената. Метод је дефинисан у Итерабле и Стреам интерфејс.
покушајте цатцх цатцх јава
Синтакса
default void forEach(Consumeraction)
Хајде да пређемо преко стека користећи методу форЕацх().
СтацкИтератионЕкампле2.јава
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); }); } }
Излаз:
Iteration over the stack using forEach() Method: 119 203 988
Коришћење методе листИтератор().
Овај метод враћа итератор листе преко елемената у поменутој листи (у низу), почевши од наведене позиције на листи. Итерира стек од врха до дна.
Синтакса
ListIterator listIterator(int index)
Параметар: Метод анализира параметар под називом индекс.
враћа: Овај метод враћа итератор листе преко елемената, у низу.
Изузетак: То баца ИндекОутОфБоундсЕкцептион ако је индекс ван опсега.
Хајде да пређемо преко стека користећи метод листИтератор().
СтацкИтератионЕкампле3.јава
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); } } }
Излаз:
Iteration over the Stack from top to bottom: 988 203 119