본문 바로가기
깨알정보

JAVA Stack ?

by 에레메쓰 2021. 3. 16.
반응형

안녕하세요. 에레메쓰입니다:) 오늘은 Java Stack에 대해서 간단하게 설명드릴게요. 영화관에서 팝콘을 보시면 처음 들어간 팝콘은 마지막에 먹게되고 마지막에 들어간 팝콘은 제일 처음으로 먹게 되는데요. 이를 바로 "LIFO(Last In First Out)" 이라고 합니다. 즉, 마지막에 들어온 데이터가 제일 먼저 나간다는 뜻입니다. 이어서 바로 스택 정의 실습을 진행해 볼게요.

 

# 스택정의

package first;

import java.util.Stack;

public class StackTest{

  public static void main(Sring[] args) {
  
    Stack<Integer> stack = new Stack<>();
    
    stack.push(1);
    stack.push(2);
    stack.push(3);
    stack.push(4);
    
    System.out.println(stack.pop());
    System.out.println(stack.pop());
    System.out.println(stack.pop());
    System.out.println(stack.pop());

 }
}    

 

 

스택 정의 시, "Stack<데이터 형태(자료형)> stack 이름 = new Stack <>();" 구조로 정의해요. 그 이후 "stack.push(데이터);"를 통해 스택에 데이터를 넣은 후 "stack.pop();"을 이용하여 스택에 저장된 값을 가져옵니다. 한번 출력해볼까요 ?

 

자바-스택출력-샘플-첫번째
Java-Stack-Println(1)

 

가장 마지막으로 넣은 데이터(4)가 먼저 출력되는 것을 확인할 수 있습니다. 그 외 다른 기능들도 알아보도록 하죠.

 

# 스택 기능들

public class StackTest {

  public static void main(String[] args){
    
    Stack<Integer> stack = new Stack<>();
   
    stack.push(1);
    stack.push(2);
    stack.push(3);
    stack.push(4);
   
    System.out.println(stack.peek());
    System.out.println(stack.empty());
    System.out.println(stack.serch(1));
    
  }
}

 

아래 출력부분에 <stack명.peek();>는 스택에서 가장 위에 있는 (pop ~) 어떤 데이터가 들어있는지 확인이 가능해요. <stack명.empty();>는 스택안에 데이터가 존재하는지 또는 비어있는지 확인이 가능해요. 그리고 <stack명.search(값);>은 해당 값이 배열안에 어느 위치에 있는지 보여줍니다. 한번 출력해볼까요 ?

 

자바-스택출력-샘플-두번째
Java-Stack-Println(2)

 

"peek"는 가장 위에 있는 4가 출력되고, "empty"는 데이터가 비어있지 않기 때문에 false가 출력됩니다. 만일 pop으로 출력했다면 ture가 출력됩니다. 자미작으로 "serch"는 맨 처음 push한 1를 찾아야 하는데 4가 나옵니다. 그 이유는 stack은 <LIFO> 방식으로 출력되기 때문인데요. 처음 넣으면 가장 마지막에 pop이 가능해서 제일 뒤로 순서가 밀린답니다.

 

댓글