logo

자바 스택

그만큼 스택 객체 컬렉션을 저장하는 데 사용되는 선형 데이터 구조입니다. 그것은 기반으로합니다 후입 선출법 (LIFO). 자바 컬렉션 프레임워크는 개체 컬렉션을 저장하기 위한 많은 인터페이스와 클래스를 제공합니다. 그 중 하나는 스택 클래스 푸시, 팝, 검색 등과 같은 다양한 작업을 제공합니다.

이 섹션에서는 자바 스택 클래스 , 그것은 행동 양식, 그리고 구현하다 스택 데이터 구조 자바 프로그램 . 하지만 Java Stack 클래스로 이동하기 전에 스택이 어떻게 작동하는지 빠르게 살펴보세요.

스택 데이터 구조에는 가장 중요한 두 가지 작업이 있습니다. 푸시 그리고 . 푸시 작업은 스택에 요소를 삽입하고 팝 작업은 스택 맨 위에서 요소를 제거합니다. 스택에서 어떻게 작동하는지 살펴보겠습니다.

자바 스택

각각 20, 13, 89, 90, 11, 45, 18을 스택에 밀어 넣습니다.

자바 스택

스택에서 18, 45, 11을 제거(팝)해 보겠습니다.

자바 스택

빈 스택: 스택에 요소가 없는 경우를 스택이라고 합니다. 빈 스택 . 스택이 비어 있으면 최상위 변수의 값은 -1입니다.

자바 스택

요소를 스택에 밀어 넣을 때 맨 위는 1 증가 . 다음 그림에서,

  • 푸시 12, 위쪽=0
  • 6번을 누르세요. 위쪽=1
  • 9번을 누르세요. 위쪽=2
자바 스택

스택에서 요소를 팝할 때 top의 값은 다음과 같습니다. 1 감소 . 다음 그림에서는 9를 팝했습니다.

자바 스택

다음 표는 상단의 다양한 값을 보여줍니다.

자바 스택

자바 스택 클래스

자바에서는 스택 컬렉션을 확장하는 컬렉션 프레임워크에 속하는 클래스입니다. 벡터 수업. 또한 인터페이스를 구현합니다. 목록, 컬렉션, 반복 가능, 복제 가능, 직렬화 가능. 이는 객체의 LIFO 스택을 나타냅니다. Stack 클래스를 사용하기 전에java.util패키지. 아래와 같이 컬렉션 프레임워크 계층 구조에 배열된 스택 클래스입니다.

자바 스택

스택 클래스 생성자

Stack 클래스에는 기본 생성자 그러면 빈 스택이 생성됩니다.

 public Stack() 

스택 생성

스택을 생성하려면 먼저java.utilStack 클래스의 객체를 패키징하고 생성합니다.

 Stack stk = new Stack(); 

또는

 Stack stk = new Stack(); 

여기서 유형은 정수, 문자열 등과 같은 스택 유형을 나타냅니다.

Stack 클래스의 메서드

스택에서 푸시, 팝, 픽 및 검색 작업을 수행할 수 있습니다. Java Stack 클래스는 이러한 작업을 수행하기 위해 주로 5가지 메서드를 제공합니다. 이와 함께 모든 방법을 제공합니다. 자바 벡터 클래스 .

방법 수정자 및 유형 방법 설명
비어 있는() 부울 이 메서드는 스택이 비어 있는지 여부를 확인합니다.
푸시(E 항목) 그리고 이 메서드는 요소를 스택 맨 위에 푸시(삽입)합니다.
팝() 그리고 이 메서드는 스택 상단에서 요소를 제거하고 해당 함수의 값과 동일한 요소를 반환합니다.
몰래 엿보다() 그리고 이 메서드는 스택의 최상위 요소를 제거하지 않고 살펴봅니다.
검색(객체 o) 정수 메소드는 지정된 객체를 검색하고 객체의 위치를 ​​반환합니다.

스택 클래스 empty() 메서드

그만큼 비어 있는() Stack 클래스의 메서드는 스택이 비어 있는지 확인합니다. 스택이 비어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다. Vector 클래스의 isEmpty() 메소드를 사용할 수도 있습니다.

통사론

 public boolean empty() 

보고: 이 메서드는 스택이 비어 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

다음 예제에서는 Stack 클래스의 인스턴스를 만들었습니다. 그 후 우리는 empty() 메소드를 두 번 호출했습니다. 처음으로 돌아왔을 때 진실 왜냐하면 스택에 어떤 요소도 푸시하지 않았기 때문입니다. 그런 다음 요소를 스택에 푸시했습니다. 다시 우리는 반환하는 empty() 메소드를 호출했습니다. 거짓 스택이 비어 있지 않기 때문입니다.

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

산출:

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

스택 클래스 push() 메서드

이 메서드는 스택 맨 위에 항목을 삽입합니다. Vector 클래스의 addElement(item) 메소드와 동일하게 작동합니다. 매개변수를 전달합니다. 안건 스택에 푸시됩니다.

통사론

 public E push(E item) 

매개변수: 스택의 맨 위로 푸시될 항목입니다.

보고: 이 메서드는 매개변수로 전달한 인수를 반환합니다.

스택 클래스 pop() 메서드

이 메서드는 스택 맨 위에 있는 개체를 제거하고 동일한 개체를 반환합니다. 그것은 던진다 빈스택예외 스택이 비어 있는 경우.

김프 변경 색상

통사론

 public E pop() 

보고: 스택의 맨 위에 있는 객체를 반환합니다.

Java 프로그램에서 스택을 구현하고 푸시 및 팝 작업을 수행해 보겠습니다.

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

산출:

 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] 

스택 클래스 peek() 메서드

스택의 맨 위에 있는 요소를 살펴봅니다. 그것도 던진다 빈스택예외 스택이 비어 있는 경우.

통사론

 public E peek() 

보고: 스택의 최상위 요소를 반환합니다.

peek() 메서드의 예를 살펴보겠습니다.

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

산출:

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

이 메서드는 스택의 개체를 위에서부터 검색합니다. 검색하려는 매개변수를 구문 분석합니다. 스택에 있는 객체의 1 기반 위치를 반환합니다. 스택의 최상위 개체는 거리 1에 있는 것으로 간주됩니다.

o가 우리가 검색하려는 스택의 개체라고 가정합니다. 이 메서드는 스택 상단에서 가장 가까운 항목의 스택 상단으로부터의 거리를 반환합니다. 그것은 사용한다 같음() 스택에서 객체를 검색하는 방법.

통사론

 public int search(Object o) 

매개변수: o는 검색하려는 객체입니다.

보고: 스택 상단에서 객체 위치를 반환합니다. -1을 반환하면 개체가 스택에 없다는 의미입니다.

search() 메소드의 예를 살펴보겠습니다.

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 스택 작업

스택 크기

Vector 클래스의 size() 메소드를 사용하여 스택의 크기를 확인할 수도 있습니다. 스택에 있는 총 요소 수(스택 크기)를 반환합니다.

통사론

 public int size() 

Vector 클래스의 size() 메서드의 예를 살펴보겠습니다.

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

산출:

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

요소 반복

반복은 스택의 요소를 가져오는 것을 의미합니다. 다음과 같은 세 가지 방법을 사용하여 스택의 요소를 가져올 수 있습니다.

  • 사용 반복자() 방법
  • 사용 각각() 방법
  • 사용 목록반복자() 방법

iterator() 메서드 사용

Iterator 인터페이스의 메소드입니다. 스택의 요소에 대한 반복자를 반환합니다. iterator() 메소드를 사용하기 전에java.util.Iterator패키지.

통사론

 Iterator iterator() 

스택에 대해 반복을 수행해 보겠습니다.

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

산출:

 BMW Audi Ferrari Bugatti Jaguar 

forEach() 메서드 사용

Java는 요소를 반복하는 forEach() 메소드를 제공합니다. 이 방법은 반복 가능 그리고 개울 상호 작용.

통사론

 default void forEach(Consumeraction) 

forEach() 메서드를 사용하여 스택을 반복해 보겠습니다.

StackIterationExample2.java

nfa 예
 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 listIterator(int index) 

매개변수: 이 메서드는 다음과 같은 매개변수를 구문 분석합니다. 색인.

보고: 이 메서드는 요소에 대한 목록 반복자를 순서대로 반환합니다.

예외: 그것은 던진다 IndexOutOfBoundsException 인덱스가 범위를 벗어난 경우.

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

산출:

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