티스토리 뷰
Stack은 더미, 퇴적, 쌓다 등의 의미를 지니고 있다.
하노이의 탑 퍼즐에서 기둥에 원판을 꽂듯이 데이터를 쌓는 구조라고 할 수 있는데,
Stack(스택)의 가장 큰 특징은 바로 이 퍼즐과 같이 후입 선출(LIFO - Last In First Out)로 동작한다는 것이다.
설명을 추가로 덧붙이자면 스택 자료구조는 반드시 데이터를 하나씩만 넣고 뺄 수 있고,
그림에서 보이는 것과 같이 단 하나의 입출력 방향을 가지고 있다.
브라우저의 앞으로 가기나 뒤로 가기 기능을 구현할 때 사용되는 스택 자료구조는 간단하게 사용 가능하다.
import java.util.Stack; // import
Stack<Integer> stack = new Stack<>(); // Integer형 스택 선언
위와 같이 먼저 Stack 클래스를 import 한 후 매개변수의 타입에 맞춰 선언해주면 된다.
아래에서는 스택 클래스에서 자주 사용되는 메서드를 정리한다.
push()
push()는 스택에 값을 추가하고 싶을 때 사용한다.
stack.push(1); // stack에 1 추가
stack.push(2); // stack에 2 추가
stack.push(3); // stack에 3 추가
위와 같이 숫자를 추가하면, 위의 하노이 탑 퍼즐처럼 아래부터 1, 2, 3이 순서대로 쌓인다.
꺼낼 때는 당연히 반대 순서로만 진행된다.
pop(), clear()
pop()은 스택에서 값을 제거하고 싶을 때 사용한다.
주의사항은 push를 이용해 값이 추가된 순서와 반대로,
그러니까 마지막에 추가된 값이 가장 먼저 제거된다는 점이다.
스택을 완전히 비우고 싶은 경우엔 clear()를 사용한다.
stack.push(1); // stack에 1 추가
stack.push(2); // stack에 2 추가
stack.push(3); // stack에 3 추가
stack.pop(); // stack에서 3 제거
stack.clear(); // stack의 전체 값 제거(초기화)
peek()
현재 스택의 최상단 값(가장 나중에 추가된 값)을 확인만 하고 싶은 경우에 사용한다.
stack.push(1); // stack에 1 추가
stack.push(2); // stack에 2 추가
stack.push(3); // stack에 3 추가
stack.pop(); // stack에서 3 제거
System.out.println(stack.peek()); // 2 출력
size()
현재 스택의 크기를 출력하고 싶을 때 사용한다.
stack.push(1); // stack에 1 추가
stack.push(2); // stack에 2 추가
stack.push(3); // stack에 3 추가
System.out.println(stack.size()); // 3 출력
empty()
현재 스택이 비어있는지 여부를 확인할 때 사용한다.
stack.push(1); // stack에 1 추가
stack.push(2); // stack에 2 추가
stack.push(3); // stack에 3 추가
System.out.println(stack.empty()); // false 출력
contains()
현재 스택에 특정 요소가 포함되어 있는지 체크할 때 사용한다.
stack.push(1); // stack에 1 추가
stack.push(2); // stack에 2 추가
stack.push(3); // stack에 3 추가
System.out.println(stack.contains(2)); // true 출력
System.out.println(stack.contains(4)); // false 출력
'Java+Spring > Java' 카테고리의 다른 글
[Java]자료구조 - Graph (0) | 2022.07.27 |
---|---|
[Java]자료구조 - Tree (0) | 2022.07.26 |
[Java]자료구조 - Queue (0) | 2022.07.25 |
[Java]배열 내용 출력하기 (Arrays.toString()) (0) | 2022.07.24 |
[Java]재귀 함수(Recursive Functions) 예제 (0) | 2022.07.23 |
[Java]재귀 함수(Recursive Functions) (0) | 2022.07.23 |
- Total
- Today
- Yesterday
- 유럽
- 세모
- Python
- a6000
- 남미
- 면접 준비
- 자바
- 세계여행
- 맛집
- Algorithm
- 야경
- 알고리즘
- 동적계획법
- 지지
- 스프링
- java
- spring
- 백준
- 세계일주
- 유럽여행
- 칼이사
- 리스트
- 기술면접
- 중남미
- 파이썬
- 여행
- Backjoon
- BOJ
- RX100M5
- 스트림
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |