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