Stack(스택)
1. Stack이란
Stack는 LIFO(Last In, First Out) 구조로, 마지막에 삽입된 데이터가 가장 먼저 제거된다. Stack을 응용한 대표적인 예로는 JVM 스택 메모리가 있다. Java에서는 java.util.Stack 클래스를 사용하여 Stack을 쉽게 사용할 수 있다.
2. Stack의 주요 메서드
메서드 | 설명 |
push(E item) | 데이터를 Stack에 추가 |
pop() | 가장 마지막 데이터 제거 및 반환 |
peek() | 가장 마지막 데이터를 제거하지 않고 반환 |
isEmpty() | Stack이 비어 있는지 확인 |
3. 예시 코드
//음식을 나타내는 Food 클래스
class Food {
private String name; //음식의 이름을 저장하는 변수
//생성자(음식의 이름을 초기화)
public Food(String name) {
this.name = name;
}
//음식의 이름을 반환하는 메서드
public String getName() {
return name;
}
}
import java.util.Stack; //Stack 클래스 사용을 위한 import 문
public class StackExample {
public static void main(String[] args) {
//Stack 객체 생성
Stack<Food> foodStack = new Stack<>();
//Stack에 음식 객체 추가(push 메서드 사용)
foodStack.push(new Food("🍕")); //🍕 추가
foodStack.push(new Food("🍔")); //🍔 추가
foodStack.push(new Food("🌭")); //🌭 추가
foodStack.push(new Food("🍣")); //🍣 추가
//Stack에서 음식을 하나씩 꺼내며 출력
while (!foodStack.isEmpty()) { //Stack이 비어있지 않은 동안 반복
Food food = foodStack.pop(); //Stack의 가장 위에 있는 음식을 꺼냄
System.out.println("꺼내온 음식: " + food.getName()); //음식의 이름을 출력
}
}
}
/*
꺼내온 음식: 🍣
꺼내온 음식: 🌭
꺼내온 음식: 🍔
꺼내온 음식: 🍕
*/
Queue(큐)
1. Queue란
Queue는 FIFO(First In, First Out) 구조로, 먼저 삽입된 데이터가 먼저 제거된다. Queue를 응용한 대표적인 예로는 스레드풀의 작업 큐가 있다. Java에서는 java.util.Queue 인터페이스와 이를 구현한 LinkedList 또는 PriorityQueue 클래스를 사용한다.
2. Queue의 주요 메서드
메서드 | 설명 |
add(E e) | 데이터를 Queue에 추가 |
offer(E e) | 데이터를 Queue에 추가(실패 시 예외 발생 없음) |
remove() | 가장 먼저 삽입된 데이터 제거 및 반환 |
poll() | 가장 먼저 삽입된 데이터 제거 및 반환(비어 있으면 null 반환) |
peek() | 가장 먼저 삽입된 데이터를 제거하지 않고 반환 |
isEmpty() | Queue가 비어 있는지 확인 |
3. 예시 코드
import java.util.LinkedList; //LinkedList를 사용하여 Queue 구현
import java.util.Queue; //Queue 인터페이스를 사용
public class QueueExample {
public static void main(String[] args) {
//Queue 객체 생성
Queue<Food> foodQueue = new LinkedList<>();
//Queue에 음식 객체 추가(enqueue)
foodQueue.add(new Food("🍕")); //🍕 추가
foodQueue.add(new Food("🍔")); //🍔 추가
foodQueue.add(new Food("🌭")); //🌭 추가
foodQueue.add(new Food("🍣")); //🍣 추가
//Queue에서 음식을 하나씩 꺼내며 출력
while(!foodQueue.isEmpty()) { //Queue가 비어있지 않은 동안 반복
Food food = foodQueue.poll(); //Queue의 앞에서 음식을 꺼냄
System.out.println("꺼내온 음식: " + food.getName()); //음식의 이름을 출력
}
}
}
/*
꺼내온 음식: 🍕
꺼내온 음식: 🍔
꺼내온 음식: 🌭
꺼내온 음식: 🍣
*/
'Language > JAVA' 카테고리의 다른 글
[JAVA]입출력 메서드 (0) | 2025.01.14 |
---|---|
[JAVA]정규 표현식 (0) | 2025.01.14 |
[JAVA]List, Set, Map 컬렉션(Collection) (2) | 2024.11.24 |
[JAVA]method 종류 (0) | 2024.11.20 |
[JAVA]메모리 구조 (0) | 2024.11.04 |