자료구조 | 동작 원리 | 삽입 위치 | 삭제 위치 | 주요 메서드 |
---|---|---|---|---|
Stack | LIFO (후입선출) | 맨 위 | 맨 위 | push() , pop() , peek() |
Queue | FIFO (선입선출) | 맨 뒤 | 맨 앞 | offer() , poll() , peek() |
push()
: 스택의 맨 위에 요소를 추가합니다.add()
: 리스트처럼 작동하여 요소를 맨 끝에 추가합니다.get()
: 특정 인덱스에 있는 요소를 가져옵니다.pop()
: 스택의 맨 위에 있는 요소를 제거하고 반환합니다.수업코드
package com.util1;
import java.util.Stack;
public class StackEx01 {
public static void main(String[] args) {
// Stack 객체 생성 (String 타입)
Stack<String> stack = new Stack<>();
// 1. 요소 추가 (push 메서드 사용)
// 스택의 맨 위에 요소를 추가
stack.push("홍길동");
stack.push("박문수");
stack.push("임꺽정"); // (임꺽정으로 수정)
// 2. 스택의 현재 상태 출력
System.out.println(stack); // 출력: [홍길동, 박문수, 임꺽정]
// 3. add() 메서드로 요소 추가
// add() 메서드는 스택에서 제공되지만 일반 리스트의 추가처럼 사용됨
stack.add("이몽룡"); // 스택의 맨 마지막(리스트의 끝)에 추가
System.out.println(stack); // 출력: [홍길동, 박문수, 임꺽정, 이몽룡]
// 4. 특정 인덱스의 요소 가져오기 (get 메서드 사용)
// 스택의 3번째 인덱스(즉, 네 번째 요소)를 가져옴
String data = stack.get(3);
System.out.println(data); // 출력: 이몽룡
System.out.println(stack); // 출력: [홍길동, 박문수, 임꺽정, 이몽룡]
// 5. 스택에서 맨 위 요소 제거 (pop 메서드 사용)
// 스택의 맨 위 요소를 제거하고 반환
String popData = stack.pop();
System.out.println(popData); // 출력: 이몽룡
System.out.println(stack); // 출력: [홍길동, 박문수, 임꺽정]
}
}
offer()
: 큐의 맨 뒤에 요소를 추가합니다.
peek()
: 큐의 맨 앞에 있는 요소를 제거하지 않고 가져옵니다.
poll()
: 큐의 맨 앞에 있는 요소를 제거하고 반환합니다.
package com.util1;
import java.util.LinkedList;
import java.util.Queue;
public class QueueEx01 {
public static void main(String[] args) {
// Queue 객체 생성 (LinkedList 사용)
Queue<String> queue = new LinkedList<>();
// 1. 요소 추가 (offer 메서드 사용)
// 큐의 맨 뒤에 요소를 추가
queue.offer("홍길동");
queue.offer("박문수");
queue.offer("임꺽정");
// 2. 큐의 현재 상태 출력
System.out.println(queue); // 출력: [홍길동, 박문수, 임꺽정]
// 3. 특정 요소 추가 (offer 메서드 사용)
// 큐의 맨 뒤에 새로운 요소를 추가
queue.offer("이몽룡");
System.out.println(queue); // 출력: [홍길동, 박문수, 임꺽정, 이몽룡]
// 4. 큐의 맨 앞 요소 가져오기 (peek 메서드 사용)
// 큐의 맨 앞에 있는 요소를 제거하지 않고 가져옴
String data = queue.peek();
System.out.println(data); // 출력: 홍길동
System.out.println(queue); // 큐는 변하지 않음: [홍길동, 박문수, 임꺽정, 이몽룡]
// 5. 큐에서 맨 앞 요소 제거 (poll 메서드 사용)
// 큐의 맨 앞 요소를 제거하고 반환
String polledData = queue.poll();
System.out.println(polledData); // 출력: 홍길동
System.out.println(queue); // 출력: [박문수, 임꺽정, 이몽룡]
}
}