[TIL] Java - Queue 구현

Wook·2025년 2월 10일
0

TIL | 취업 후

목록 보기
9/9

📌 자바 큐(Queue) 주요 메서드 정리

자바에서 큐(Queue)java.util.Queue 인터페이스를 통해 제공되며, LinkedList, ArrayDeque, PriorityQueue 등의 클래스에서 구현됩니다.

아래는 Queue 인터페이스의 주요 메서드입니다.


1. 큐에 요소 추가 (Enqueue)

메서드설명반환값
offer(E e)큐의 끝에 요소 추가 (성공 시 true, 실패 시 false)boolean
add(E e)큐의 끝에 요소 추가 (실패 시 예외 발생)boolean
Queue<Integer> queue = new LinkedList<>();
queue.offer(10); // 성공 시 true 반환
queue.add(20);   // 성공 시 true 반환 (실패 시 예외 발생)

🚀 offer() vs add() 차이

  • offer()는 큐의 크기가 제한된 경우 공간이 없으면 false를 반환.
  • add()는 공간이 없으면 예외(IllegalStateException)를 발생.

2. 큐에서 요소 제거 (Dequeue)

메서드설명반환값
poll()큐의 첫 번째 요소 제거 및 반환 (비어있으면 null)E (요소)
remove()큐의 첫 번째 요소 제거 및 반환 (비어있으면 예외 발생)E (요소)
System.out.println(queue.poll()); // 10 (큐에서 제거됨)
System.out.println(queue.remove()); // 20 (큐에서 제거됨, 비어있으면 예외 발생)

🚀 poll() vs remove() 차이

  • poll()은 큐가 비어 있으면 null을 반환.
  • remove()는 큐가 비어 있으면 예외(NoSuchElementException) 발생.

3. 큐의 첫 번째 요소 확인 (Peek)

메서드설명반환값
peek()큐의 첫 번째 요소 확인 (제거하지 않음, 비어있으면 null)E (요소)
element()큐의 첫 번째 요소 확인 (제거하지 않음, 비어있으면 예외 발생)E (요소)
System.out.println(queue.peek()); // 10 (큐에서 제거되지 않음)
System.out.println(queue.element()); // 10 (큐에서 제거되지 않음, 비어있으면 예외 발생)

🚀 peek() vs element() 차이

  • peek()은 큐가 비어있으면 null을 반환.
  • element()는 큐가 비어있으면 예외(NoSuchElementException) 발생.

4. 기타 메서드

메서드설명반환값
size()큐에 있는 요소 개수 반환int
isEmpty()큐가 비어있는지 확인boolean
contains(E e)특정 요소가 큐에 있는지 확인boolean
clear()큐의 모든 요소 제거void
System.out.println(queue.size()); // 큐 크기 반환
System.out.println(queue.isEmpty()); // 큐가 비어있는지 확인
System.out.println(queue.contains(10)); // true (큐에 10이 있는 경우)
queue.clear(); // 큐 비우기

🎯 자바 큐(Queue) 주요 메서드 정리

메서드설명비어있을 때
offer(E e)요소 추가 (실패 시 false 반환)-
add(E e)요소 추가 (실패 시 예외 발생)IllegalStateException
poll()첫 번째 요소 제거 및 반환null 반환
remove()첫 번째 요소 제거 및 반환NoSuchElementException
peek()첫 번째 요소 조회 (제거 X)null 반환
element()첫 번째 요소 조회 (제거 X)NoSuchElementException
size()큐 크기 반환-
isEmpty()큐가 비어있는지 확인-
contains(E e)특정 요소 존재 여부 확인-
clear()모든 요소 제거-

🔎 예제: 자바 큐 메서드 활용

import java.util.LinkedList;
import java.util.Queue;

public class QueueMethodsExample {
    public static void main(String[] args) {
        Queue<Integer> queue = new LinkedList<>();

        // 큐에 데이터 추가
        queue.offer(10);
        queue.offer(20);
        queue.offer(30);
        System.out.println("큐 상태: " + queue); // [10, 20, 30]

        // 큐의 첫 번째 요소 확인
        System.out.println("peek(): " + queue.peek()); // 10
        System.out.println("element(): " + queue.element()); // 10

        // 큐에서 요소 제거
        System.out.println("poll(): " + queue.poll()); // 10
        System.out.println("remove(): " + queue.remove()); // 20

        // 큐 크기 및 비어있는지 확인
        System.out.println("큐 크기: " + queue.size()); // 1
        System.out.println("큐 비어있는가?: " + queue.isEmpty()); // false

        // 큐 비우기
        queue.clear();
        System.out.println("큐 비어있는가?: " + queue.isEmpty()); // true
    }
}

🚀 정리

자바에서 Queue를 사용할 때, 안정적인 offer()poll() 사용을 추천합니다.

  • 요소 추가offer(), add()
  • 요소 제거poll(), remove()
  • 첫 요소 조회peek(), element()
  • 큐 상태 확인size(), isEmpty(), contains()
  • 큐 비우기clear()
profile
지속적으로 성장하고 발전하는 진취적인 태도를 가진 개발자의 삶을 추구합니다.

0개의 댓글

관련 채용 정보