[Java] Stack / Queue 사용예시
코테하다보니 종종 등장해서 적어봄
LIFO (last in first out) 특성 이용할 때 사용하는 Stack
주요 메서드
push(item) 스택에 요소 추가
pop() 스택 최상단 요소 제거 및 반환
peek() 스택 최상단 값 조회
isEmpty() 스택이 비어있는지 확인
size() 스택의 사이즈
search(Object o) 해당 요소가 스택에서 몇번째인지 반환. 없으면 -1
사용 예시 코드
import java.util.Stack;
public class StackExample {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
// 요소 추가
stack.push(10);
stack.push(20);
stack.push(30);
System.out.println(stack);
// 출력: [10, 20, 30]
// 최상단 요소 조회 (제거X)
System.out.println(stack.peek());
// 출력: 30
// 요소 제거
System.out.println(stack.pop());
// 출력: 30
System.out.println(stack);
// 출력: [10, 20]
// 스택이 비었는지 확인
System.out.println(stack.isEmpty());
// 출력: false
// 스택 크기 확인
System.out.println(stack.size());
// 출력: 2
}
}
FIFO(first in first out) 특성 이용할 때 사용하는 Queue
주요 메서드
opper(item) 큐에 요소 추가. 성공시 true 반환
poll() 큐 맨 앞 요소 제거 및 반환. 비어있으면 null 반환
peek() 큐 맨 앞 값 조회. 비어있으면 null 반환
isEmpty() 큐가 비어있는지 확인
size() 스택의 사이즈
사용 예시 코드
import java.util.LinkedList;
import java.util.Queue;
public class QueueExample {
public static void main(String[] args) {
Stack<Integer> stack = new Stack<>();
// 요소 추가
stack.offer(10);
stack.offer(20);
stack.offer(30);
System.out.println(queue);
// 출력: [10, 20, 30]
// 맨 앞 요소 조회 (제거X)
System.out.println(queue.peek());
// 출력: 10
// 요소 제거
System.out.println(stack.poll());
// 출력: 10
System.out.println(queue);
// 출력: [20, 30]
// 스택이 비었는지 확인
System.out.println(queue.isEmpty());
// 출력: false
// 스택 크기 확인
System.out.println(queue.size());
// 출력: 2
}
}