[JAVA]Stack, Queue 컬렉션(Collection)

2024. 12. 25. 22:47·Language/JAVA

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
'Language/JAVA' 카테고리의 다른 글
  • [JAVA]입출력 메서드
  • [JAVA]정규 표현식
  • [JAVA]List, Set, Map 컬렉션(Collection)
  • [JAVA]method 종류
yxxjxxeee
yxxjxxeee
  • yxxjxxeee
    공부 일지
    yxxjxxeee
  • 전체
    오늘
    어제
    • study N
      • Framework
        • Spring
      • Language
        • JavaScript
        • C | C++
        • JAVA
        • PHP
      • CS
        • 네트워크
        • 자료구조
        • 데이터베이스
        • 운영체제
      • DBMS
        • MySQL
      • 코딩테스트 N
        • 백준 N
        • 프로그래머스
        • LeetCode
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 쇼핑몰 제작 프로젝트(PHP)
    • github
  • 공지사항

  • 인기 글

  • 최근 글

  • hELLO Designed By 정상우
    Version v4.10.2
yxxjxxeee
[JAVA]Stack, Queue 컬렉션(Collection)
상단으로

티스토리툴바