본문 바로가기

개발지/Today I learn

[1026] 자바 - 자료구조 (Stack)

# Stack

- Stack의 정의와 구조

  ▪ Stack데이터를 순서대로 쌓는 자료 구조이다.

  ▪ LIFO(Last In First Out) / FILO(First In Last Out) 의 구조를 가지고 있다. 

  ▪ 여러 개의 데이터를 입력한 뒤 출력할 때, 가장 먼저 입력된 데이터가 가장 나중에 출력된다.

 

- Stack의 특징

  1. 후입선출 (LIFO / FILO)
    -> 먼저 입력된 데이터는 가장 나중에 출력됨
  2. 데이터의 입출력은 하나씩 가능
  3. 입출력 방향이 한 방향

 

- Stack 자료 구조의 장·단점

  ▪  장점

  1. 빠른 데이터 로딩
    -> 후입선출의 구조로 인해 데이터의 삽입/삭제가 일어날 때 다른 데이터의 위치를 변경하지 않기 때문에 빠르게 데이터를 삽입/삭제 할 수 있다.
  2. 별도 라이브러리 / 모듈 설치 필요 없음
    -> 자바 기본 제공 자료 구조이다

  ▪  단점

  1. 메모리 사용량 증가
    -> 크기가 제한되지 않아 불필요한 메모리 사용이 일어날 수 있다. 이를 위해서 스택의 크기를 미리 정해놓거나 동적으로 크기를 조절하는 방법을 사용해야 한다.
  2. 크기를 동적으로 조정하지 않음
    -> Vector 클래스를 상속받아 구현된 Stack 클래스는 크기가 자주 변할 때, 효율이 떨어진다.
        크기가 자주 변하는 스택에서는 다른 자료 구조를 사용하는 것이 효율적이다.
  3. Vector 클래스 메서드 사용 가능
    -> Vector클래스의 오버라이딩하고 있어, Stack의 자료 구조와 맞지 않는 상속 메서드 사용 시
        불필요한 동작이 일어날 수 있다.

 

- Stack 메서드

import java.util.Stack;

class Stack {
    public static void main(String[] args) {
        Stack<자료형> exOfStack1 = new Stack<>();
        Stack exOfStack2 = new Stack();
        
        // 스택에 삽입
        exOfStack1.push(자료형 vaule); // push 사용 시 value값 리턴
        exOfStack2.add(여러 자료형); //add 사용 시 true/false 리턴
        
        // 스택 값 제거
        exOfStack1.pop(); // 최근 추가된 데이터 삭제&리턴
        exOfStack2.clear(); // 스택의 전체 값 제거(초기화)
        
        // 스택 값 조회
        exOfStack1.peek(); // 최근 추가된 데이터 조회&리턴 (삭제 X)
        exOfStack2.peek();
        
        // 빈 스택인지 확인
        exOfStack1.empty(); // boolean 리턴
        
        // 스택에 해당값 있는 지 확인
        exOfStack2.contains(value); // value의 인덱스(꺼내질 순서) 리턴
        
        // 스택 크기 출력
        exOfStack1.size(); 
        
    }
}

'개발지 > Today I learn' 카테고리의 다른 글

[1122] 자바 - 자료구조 (Tree)  (1) 2023.11.23
[1122] 자바 - 자료구조 (Queue)  (0) 2023.11.22
[1010] CS 지식 - 웹 (HTTP Messages)  (1) 2023.10.10
[0926] CS 지식 - 웹(CORS)  (0) 2023.09.27
[0925] CS 지식 - 웹(SSR / CRS)  (0) 2023.09.25