Пример за Java стека  



Ява Стек

Какво е клас на Java Stack?  

Реализацията на класа на стека на Java се основава на структурата на данните на стека. Той следва концепцията на концепцията Last-In-First-Out (LIFO), което означава, че елементът, който вмъкваме последен, ще бъде премахнат първи. С други думи, можем да изтриваме елементи само от горната част на стека. Класът Java Stack разширява класа Vector и по този начин импортира и методите на класа Vector. В този урок ще научим за класа и методите на стека на Java с изпълнение на стека в Java с примери и различните му операции.

Работа на структура от данни на Java Stack  

Класът на стека в Java има две основни операции за вмъкване и премахване на елементи. Методът push () вмъква елемент, а методът pop () изтрива елемент. И двете операции се извършват от горната част на стека.

Диаграмата по-долу представя работата на структурата от данни на стека в Java.

Реализация на Java стекащифт

Натиснете операция:

Докато вмъкваме всеки елемент в стек, използвайки метода push, последният вмъкнат елемент винаги ще бъде отгоре. Той продължава да добавя елементи върху по-стария елемент. Например първо вмъкваме 10, след това 20. В този случай 20 ще бъде отгоре на 10 и т.н.

Реализация на Java стекащифт

Поп операция:

Поп методът премахва най-новия елемент, който вмъкваме от горната част на стека. Това следва концепцията за LIFO, която е „Последно-първи-излязъл“. Например, ако имаме 5 елемента 10,20,30,40 и 50. Следователно, когато използваме метода pop (), той първо премахва стойността 50, тъй като това е най-горният елемент, присъстващ в стека.

Вижте също
ListIterator в Java

Операции с Java стекащифт

Как да създадете стек в Java  

Можем да създадем празен стек, използвайки конструктора по подразбиране stack(). За да приложим структурата на данните за стека, трябва да импортираме пакета java.util.stack.

Stack<E> stack = new Stack<E>();

E означава родовия тип.

Методи за стека в Java  

По-долу са посочени методите, които са част от класа Stack.

МетодиОписание
булево празно ()Проверява дали стекът е празен
Връща true, ако стекът е празен, иначе връща false
Целочислено надникване ()Връща последния вмъкнат елемент, който е в горната част на стека
Цяло число ()Връща и премахва последния вмъкнат елемент, който е в горната част на стека
Цяло число (Integer e)Избутва или вмъква елемент в стека
int търсене (обект o)Търси посочения елемент в стека и връща разстоянието от горната част на стека

По-долу са методите в класа Vector. Класът на стека също импортира всички методи на класа Vector.

Начин на доставкаОписаниеПараметър
Булево добавяне (Обект e)Добавя посочения елемент в края на вектораe - елементът, който трябва да се добави.
Върната стойност - Вярно
void add (int index, Object e)Добавя елемента към посочения индекс. Ако индексът вече съдържа елемент, той се измества надясно index - индексът, при който трябва да се вмъкне елементът
e - елементът, който трябва да бъде вмъкнат
Boolean addAll (Колекция c)Добавя колекция от определени елементи към векторав - колекция от елементи за добавяне
Върната стойност - вярно
Булево addAll (индекс int, колекция c)Добавя колекция от елементи при посочения индекс. Ако индексът вече съдържа елемент, той впоследствие се измества надясноиндекс - индекс, при който трябва да се добавят елементите
в - колекция от елементи за добавяне
Върната стойност - Вярно
void addElement (обект obj)Добавя посочения компонент към вектораobj - компонентът, който ще се добави
вътрешен капацитет ()Връща текущия капацитет или размера на вектора
празно ясно ()Премахва всички елементи от вектора и става празен
Клон на обект ()Връща клонинг на вектора, където копието съдържа препратка към клонинга на вътрешния масив от данни
Булево съдържа (Обект o)Проверява дали векторът съдържа посочения елементВърната стойност - вярно, ако списъкът съдържа елемента
Булево съдържа All (Колекция c)Проверява дали векторът съдържа всички елементи в колекциятаВърната стойност - вярно, ако списъкът съдържа всички елементи
void copyInto (Object [] anArray)Копира съдържанието на вектора в посочения масивanArray - масив, който трябва да съдържа съдържанието на вектора
Object elementAt (индекс int)Връща обекта с посочения индекс
Елементи за изброяване ()Връща изброяване на всички компоненти във вектора, където началният индекс е 0
void secureCapacity (int minCapacity)Гарантира, че векторът може да побере най-малкия посочен минимален капацитет
Булево равно (Обект o)Сравнява дали векторът съдържа всички посочени елементи в точния редВърната стойност - вярно, ако елементите на обекта съвпадат със списъка
Обект firstElement ()Връща първия компонент при индекс 0
void forEach (Потребителско действие)Извършва даденото действие за елемента във вектора в итерация.
Обект получаване (индекс int)Връща елемента при посочения индексиндекс - позицията на елемента, който трябва да бъде извлечен
int indexOf (Обект o)Извлича индекса на първото появяване на посочения елементo - Елементът, който трябва да бъде идентифициран
Върната стойност - стойност на индекса
int indexOf (Обект o, индекс int)Връща индекса на първото появяване на посочения елемент, започвайки от споменатия индексo - Елементът, който трябва да бъде идентифициран
индекс - начален индекс на търсенето
void insertElementAt (Обект o, индекс int)Вмъква посочения обект като компонент във вектора при посочения индексo - Елементът, който трябва да бъде идентифициран
индекс - индекс, при който трябва да се вмъкне елемент
boolean isEmpty ()Проверява дали векторът е празен
Итератор на итератор ()Връща итератор над елементите във вектора
Обект lastElement ()Връща последния елемент във вектора
int lastIndex (Обект o)Връща последното появяване на посочения елемент. Ако не присъства, връща -1
int lastIndex (Обект o, индекс int)Връща последното появяване на посочения елемент, търсещ назад от посочения индекс. Ако не присъства, връща -1
ListIterator listiterator ()Връща списъка на елементите във вектора
ListIterator listiterator (индекс int)Връща списъка на елементите във вектора от посочения индекс
Премахване на обект (индекс int)Премахва елемента с посочения индекс от вектораВърната стойност - елементът, който се премахва
булево премахване (обект o)Премахва посочения елемент от вектораВърната стойност - вярно, ако е премахната
Булево премахване на всички (Колекция в)Премахва всички елементи на колекцията от векторав - Елементи на колекцията
void removeAllElements ()Премахва всички компоненти от вектора и задава размера на 0
boolean removeElement (Обект o)Премахва посочения елемент от вектораВърната стойност - вярно, ако е премахната
void removeElementAt (индекс int)Премахва или изтрива компонента при посочения индекс
boolean removeIf (предикатен филтър)Премахва всички елементи, които удовлетворяват дадения предикатфилтър - условие, което да се приложи
Boolean retainAll (Колекция c)Запазва всички елементи, посочени в колекцията във вектора. Други елементи ще бъдат премахнатив - колекция от елементи, която трябва да бъде запазена
Върната стойност - вярно, ако векторът се промени поради извикания метод
Набор обекти (индекс int, обект o)Заменя елемента при посочения индекс с предадения обектo - елементът, който трябва да бъде заменен
index - индекс на елемента
Върната стойност - Връща елемента, който преди е бил с посочения индекс
void setElementAt (Обект o, индекс int)Задава компонента на посочения индекс, като отхвърля старата стойностo - елемент, който трябва да бъде зададен
index - индекс, при който елементът трябва да бъде актуализиран
void setSize (int newsize)Задава размера на вектора с посочената стойностnewsize - размер на вектора
размер int ()Връща броя на компонентите във вектора
сортиране на празнота (сравнение c)Сортира елементите във вектора въз основа на компаратораc - сравнителна стойност
Списък на списъка (int отIndex, int toIndex)Извлича частта от списъка въз основа на start и endIndexfromIndex - позиция, от която трябва да бъде извлечен подлистът (включен)
toIndex - индексът, до който трябва да бъде извлечен подлистът (изключен)
Обект [] към масив ()Връща масив от елементи във вектора
void trimToSize ()Подрязва капацитета на вектора, за да бъде текущият размер на капацитета
Вижте също
Намерете максимална дълбочина на вложените скоби в низ

Примери за Java стека  

По-долу са дадени различните примери на стека на Java за различни операции на стека в Java.

Пример: push () - Добавяне на елементи към стека

Примерът по-долу илюстрира как да вмъкнете елемент в стека на Java с помощта на метода push (). Това е еквивалентно на метода add () на Вектор клас. Всеки път, когато добавя елемента, той отива в долната част на стека, така че последният вмъкнат елемент да е отгоре.

import java.util.Stack;

public class StackDemo {

  public static void main(String[] args) {
    Stack<Integer> s = new Stack<Integer>();
    s.push(10);
    s.push(20);
    s.push(30);
    s.push(40);
    s.push(50);
    
    System.out.println("Elements in stack: " + s);
  }

}
Elements in stack: [10, 20, 30, 40, 50]

Пример: pop () - Премахване на елементи от стека

Примерът по-долу показва как да изтриете елементи от стека. Първо премахва най-новия елемент от горната част на стека. Следователно първият метод pop () връща 50, който е последният елемент, който е вмъкнат и последван от елемента 40 за втория метод pop ().

import java.util.Stack;

public class StackDemo {

  public static void main(String[] args) {
    Stack<Integer> s = new Stack<Integer>();
    s.push(10);
    s.push(20);
    s.push(30);
    s.push(40);
    s.push(50);
    
    System.out.println("Elements in stack: " + s);
    
    int x = s.pop();
    System.out.println("Element removed from stack: " + x);
    
    x = s.pop();
    System.out.println("Element removed from stack: " + x);
  }

}
Elements in stack: [10, 20, 30, 40, 50]
Element removed from stack: 50
Element removed from stack: 40

Пример: метод search ()

Методът search () търси конкретния елемент и връща позицията, започвайки от горната част на стека. В този пример елемент 30 присъства в третата позиция и елемент 3 във втората позиция.

import java.util.Stack;

public class StackDemo {

  public static void main(String[] args) {
    Stack<Integer> s = new Stack<Integer>();
    s.push(10);
    s.push(20);
    s.push(30);
    s.push(40);
    s.push(50);
    
    System.out.println("Elements in stack: " + s);
    
    System.out.println("The index of element 30 using search method: " + s.search(30));
    System.out.println("The index of element 40 using search method: " + s.search(40));
  }

}
Elements in stack: [10, 20, 30, 40, 50]
The index of element 30 using search method: 3
The index of element 40 using search method: 2

Пример: метод peek ()

Методът peek () връща последния вмъкнат елемент, който е най-горният елемент. Този метод извлича само стойността и не я премахва от стека.

import java.util.Stack;

public class StackDemo {

  public static void main(String[] args) {
    Stack<Integer> s = new Stack<Integer>();
    s.push(10);
    s.push(20);
    s.push(30);
    s.push(40);
    s.push(50);
    
    System.out.println("Elements in stack: " + s);
    System.out.println("Element returned using the peek() method: " + s.peek());
    
  }

}
Elements in stack: [10, 20, 30, 40, 50]
Element returned using the peek() method: 50

Пример: Итерация през елементи на стека на Java

Можем да итерираме през всички елементи в стека на Java с помощта на итератор метод, присъстващ в класа Vector. Примерът по-долу показва как да повторите стека.

import java.util.Iterator;
import java.util.Stack;

public class StackDemo {

  public static void main(String[] args) {
    Stack<Integer> s = new Stack<Integer>();
    s.push(10);
    s.push(20);
    s.push(30);
    s.push(40);
    s.push(50);
    
    System.out.println("Elements in stack: " + s);
    
    Iterator<Integer> i = s.iterator();
    while(i.hasNext())
      System.out.println(i.next());
    
  }

}
Elements in stack: [10, 20, 30, 40, 50]
10
20
30
40
50

Пример: Изчистете проверката на стека, ако е празна

По-долу е даден пример за изчистване на елементите в стека с помощта на метода clear () и проверка дали атаката е празна с помощта на метода isEmpty (). Първоначално, когато създадем стек, той ще бъде празен. Това също се нарича празен стек.

import java.util.Iterator;
import java.util.Stack;

public class StackDemo {

  public static void main(String[] args) {
    Stack<Integer> s = new Stack<Integer>();
    
    s.push(10);
    s.push(20);
    s.push(30);
    s.push(40);
    s.push(50);
    
    System.out.println("Elements in stack: " + s);
    System.out.println("Is stack empty: " + s.isEmpty());
    
    s.clear();
    System.out.println("Elements in stack after clear method: " + s);
    System.out.println("Is stack empty: " + s.isEmpty());
    
  }

}
Elements in stack: [10, 20, 30, 40, 50]
Is stack empty: false
Elements in stack after clear method: []
Is stack empty: true

Пример: Преобразуване на Java списък в стек

Можем да конвертираме Java List в стека, като добавим колекция от елементи на списъка към стека, използвайки метода addAll ().

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;

public class ListToStack {

  public static void main(String[] args) {
    Stack<Integer> s = new Stack<Integer>();
    List<Integer> l = new ArrayList<Integer>();
    
    l.add(10);
    l.add(20);
    l.add(30);
    l.add(40);
    l.add(50);
    
    s.addAll(l);
    System.out.println("Elements in stack from List: " + s);

  }

}
Elements in stack from List: [10, 20, 30, 40, 50]

Пример: Преобразуване на масив в стек

В примера по-долу добавяме елементи от масив към стека, използвайки метода push ().

import java.util.Stack;

public class ArrayToStack {

  public static void main(String[] args) {
    Stack<Integer> s = new Stack<Integer>();
    int[] num = {10,20,30,40,50};
    
    for(int i : num)
      s.push(i);
    
    System.out.println("Array elements in stack: " + s);
  }

}
Array elements in stack: [10, 20, 30, 40, 50]

Пример: Преобразуване на стека в масив

Можем също да преобразуваме стека в масив, използвайки метода toArray (), както в примера по-долу.

import java.util.Stack;

public class StackToArray {

  public static void main(String[] args) {
    Stack<Integer> s = new Stack<Integer>();
    s.push(10);
    s.push(20);
    s.push(30);
    
    System.out.println("Elements in stack: " + s);
    
    Object[] arr = s.toArray();
    System.out.println("Elements in Array: ");
    for(int i=0;i<arr.length;i++)
      System.out.print(arr[i] + " ");
  }

}
Elements in stack: [10, 20, 30]
Elements in Array: 
10 20 30

заключение  

В този урок видяхме как да използваме класа и методите на стека Java, заедно с изпълнението на стека и примери.

Вижте също
Супер ключова дума в Java

препратка