큐 (Queue)

dogit·2021년 7월 8일
0

Data Structure

목록 보기
1/3
post-thumbnail

Queue에 대하여 알아보자

개요

큐의 사전적 의미는 무엇을 기다리는 사람, 차량 등의 줄 혹은 줄을 서서 기다리는 것을 의미한다 이처럼 줄을 지어 순서대로 처리되는 것이 '큐'라는 자료구조이다.

특징

  • 큐는 스택과는 다르게 FIFO(First In First Out)의 형태를 가진다.
  • 큐는 한 쪽 끝은 프런트(front)로 정하여 삭제 연산만 수행함
  • 다른 한 쪽 끝은 리어(rear)로 정하여 삽입 연산만 수행함
  • 그래프의 넓이 우선 탐색(BFS)에서 사용
  • 컴퓨터 버퍼에서 주로 사용, 마구 입력이 되었으나 처리를 하지 못할 때, 버퍼(큐)를 만들어 대기 시킴

사용법

큐 선언

import java.util.LinkedList; //import
import java.util.Queue; //import
Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언, linkedlist 이용
Queue<String> queue = new LinkedList<>(); //String형 queue 선언, linkedlist 이용

자바에서 큐는 LinkedList를 활용하여 생성해야 한다.
그렇기에 큐와 LinkedList가 다 Import 되어 있어야 한다.
Queue queue = new LinkedList<>()와 같이 선언해주면 된다.

큐 값 추가

Queue<Integer> stack = new LinkedList<>(); //int형 queue 선언
queue.add(1);     // queue에 값 1 추가
queue.add(2);     // queue에 값 2 추가
queue.offer(3);   // queue에 값 3 추가

자바에서 큐값을 추가할 때 add() 또는 offer()를 사용한다.
add()의 경우 만약 삽입에 성공하면 true를 반환하고, 큐에 여유공간이 없어 삽입에 실패하면 IllegalStateException을 발생시킨다.
offer()는 큐가 가득차서 더이상 추가할 수 없는 경우 false를 반환하고 요소가 추가되면 true를 반환하며 특정 예외를 throw하지 않는다.

queue에 값을 계속해서 추가해나간다면 아래 그림과 같은 형태로 데이터가 쌓이게 된다.

큐 값 삭제

Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언
queue.offer(1);     // queue에 값 1 추가
queue.offer(2);     // queue에 값 2 추가
queue.offer(3);     // queue에 값 3 추가
queue.poll();       // queue에 첫번째 값을 반환하고 제거 비어있다면 null
queue.remove();     // queue에 첫번째 값 제거
queue.clear();      // queue 초기화
  

queue에서 값을 제거하고싶다면 poll()이나 remove()를 사용하면 된다.
poll()함수는 큐가 비어있으면 null을 반환합니다.
pop()을 하면 가장 앞쪽에 있는 원소의 값이 아래 그림과 같이 제거된다. queue의 모든 요소를 제거하려면 clear()메서드를 사용한다.

큐에서 가장 먼저 들어간 값 출력

Queue<Integer> queue = new LinkedList<>(); //int형 queue 선언
queue.offer(1);     // queue에 값 1 추가
queue.offer(2);     // queue에 값 2 추가
queue.offer(3);     // queue에 값 3 추가
queue.peek();       // queue의 첫번째 값 참조

Queue에서 첫번째로 저장된 값을 참조하고 싶다면 peek()를 사용하면 됩니다.

profile
느리더라도 꾸준하게

0개의 댓글