# Stack
- Stack의 정의와 구조
▪ Stack은 데이터를 순서대로 쌓는 자료 구조이다.
▪ LIFO(Last In First Out) / FILO(First In Last Out) 의 구조를 가지고 있다.
▪ 여러 개의 데이터를 입력한 뒤 출력할 때, 가장 먼저 입력된 데이터가 가장 나중에 출력된다.
- Stack의 특징
- 후입선출 (LIFO / FILO)
-> 먼저 입력된 데이터는 가장 나중에 출력됨 - 데이터의 입출력은 하나씩 가능
- 입출력 방향이 한 방향
- Stack 자료 구조의 장·단점
▪ 장점
- 빠른 데이터 로딩
-> 후입선출의 구조로 인해 데이터의 삽입/삭제가 일어날 때 다른 데이터의 위치를 변경하지 않기 때문에 빠르게 데이터를 삽입/삭제 할 수 있다. - 별도 라이브러리 / 모듈 설치 필요 없음
-> 자바 기본 제공 자료 구조이다
▪ 단점
- 메모리 사용량 증가
-> 크기가 제한되지 않아 불필요한 메모리 사용이 일어날 수 있다. 이를 위해서 스택의 크기를 미리 정해놓거나 동적으로 크기를 조절하는 방법을 사용해야 한다. - 크기를 동적으로 조정하지 않음
-> Vector 클래스를 상속받아 구현된 Stack 클래스는 크기가 자주 변할 때, 효율이 떨어진다.
크기가 자주 변하는 스택에서는 다른 자료 구조를 사용하는 것이 효율적이다. - 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 |