Queue — 처리를 앞둔 요소를 담는 컬렉션

Queue — 처리를 앞둔 요소를 담는 컬렉션

Queue<E>처리(processing) 전에 요소를 담아두기 위한 컬렉션이에요. 기본 Collection 연산 외에도 큐는 추가적인 삽입·추출·검사 연산을 제공해요. 각 메서드는 두 가지 형태가 있어요. 하나는 연산 실패 시 예외를 던지고, 다른 하나는 특수 값(null 또는 false)을 반환해요.

출처: Java API Reference

본문

public interface Queue<E> extends Collection<E>

큐 메서드 요약:

구분 예외 던짐 특수 값 반환
삽입 add(e) offer(e)
제거 remove() poll()
검사 element() peek()

큐는 일반적으로(반드시는 아님) FIFO(선입선출) 방식으로 요소를 정렬해요. 예외로는 공급된 비교자나 자연 순서로 정렬하는 우선순위 큐, LIFO(후입선출)로 정렬하는 LIFO 큐(스택) 가 있어요. 어떤 순서를 쓰든 큐의 머리(head)는 remove()poll()이 제거할 요소예요.

offer는 가능하면 요소를 삽입하고, 실패하면 false를 반환해요. 이것은 예외를 통해서만 삽입 실패를 알릴 수 있는 Collection.add와 달라요. offer는 실패가 예외적 상황이 아닌 일반적인 상황(예: 고정 용량 "bounded" 큐)에서 쓰도록 설계됐어요.

remove()poll()은 큐의 머리를 제거하고 반환하며, 큐가 비었을 때만 달라요. remove()는 예외를, poll()null을 반환해요. element()peek()은 머리를 제거하지 않고 반환하며, 역시 큐가 비었을 때만 예외/null로 갈라져요.

메서드

  • add(E) — 가능하면 삽입하고 성공 시 true, 공간이 없으면 IllegalStateException을 던져요.
  • offer(E) — 가능하면 삽입하고, 아니면 false를 반환해요. 용량 제한 큐에서는 add보다 선호돼요.
  • remove() — 머리를 제거하고 반환하며, 비어 있으면 예외를 던져요.
  • poll() — 머리를 제거하고 반환하며, 비어 있으면 null을 반환해요.
  • element() — 머리를 제거하지 않고 반환하며, 비어 있으면 예외를 던져요.
  • peek() — 머리를 제거하지 않고 반환하며, 비어 있으면 null을 반환해요.

더 알아보기 (Learn more)