Language/Java

Queue❓

m5n 2024. 5. 21. 22:50

 

Queue❓

  • Queue는 선입선출(First-In-First-Out; LIFO)의 대표적인 선형 자료구조 중의 하나
  • 선입선출이란 First-In-First-Out 이라는 뜻 그대로 가장 먼저 들어온 데이터가 가장 먼저 나간다 의 의미
  • 프로그래밍에서 데이터가 입력된 순서대로 처리될 때 사용

Queue의 특징

  1. 먼저 들어간 자료가 먼저 나오는 구조 FIFO(First In FIrst Out) 구조
  2. 큐는 한 쪽 끝은 프런트(front)로 정하여 삭제 연산만 수행함
  3. 다른 한 쪽 끝은 리어(rear)로 정하여 삽입 연산만 수행함
  4. 그래프의 넓이 우선 탐색(BFS)에서 사용
  5. 컴퓨터 버퍼에서 주로 사용, 여러 개의 입력이 있으나 처리를 하지 못할 때, 버퍼(큐)를 만들어 대기 시킴

stack_image

Queue 사용법

Queue 선언

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

Queue<Integer> queue = new LinkedList<>();

 

Queue 값 추가

Queue<Integer> queue = new LinkedList<>();

queue.add(1);        // queue에 1추가
queue.add(2);        // queue에 2추가

queue.offer(3);        // queue에 3추가
queue.offer(4);        // queue에 4추가
  • add(value): 삽입 성공 시 true 반환, 사용 가능한 공간이 없어 삽입 실패 시 IllegalStateException 발생
  • offer(value): 삽입 성공 시 true 반환, 사용 가능한 공간이 없어 삽입 실패 시 false 반환

Queue 값 삭제

Queue<Integer> queue = new LinkedList<>();

Queue.remove();        // 큐의 헤드 값 삭제

Queue.poll();        // 큐의 헤드 값 삭제
  • remove(): 큐의 헤드를 조회하고 제거, 큐가 비어있다면 예외 발생
  • poll(): 큐의 헤드를 조회하고 제거, 큐가 비어있다면 null 반환

Queue 가장 먼저 들어간 값 출력

Queue<Integer> queue = new LinkedList<>();

Queue.peek();        // 큐의 헤드 값 출력

 

Queue 기타 메서드

Queue<Integer> queue = new LinkedList<>();

queue.size();        // queue의 크기 출력
queue.isEmpty();    // queue가 비어있는지 확인 (비어있다면 true를 반환)
queue.contains(1);    // queue에 1이 있는지 확인 (있다면 true를 반환)
queue.clear();         // queue에 들어있는 모든 값 초기화