티스토리 뷰

Java+Spring/Java

[Java]자료구조 - Queue

Vagabund.Gni 2022. 7. 25. 22:53
728x90
반응형

Queue는 (대기)줄이라는 의미를 가지고 있다.

 

위 그림에서 보는 것처럼 데이터의 입력과 출력 방향이 따로 정해져 있으며,

 

먼저 들어간 데이터가 먼저 나오는 선입 선출(FIFO - First In First Out) 구조를 가지고 있다.

 

또한 스택의 경우와 마찬가지로 데이터의 입출력을 하나씩만 할 수 있다는 특징도 가지고 있다.

 

추가로 큐에 데이터를 집어넣는 동작을 'enqueue'라고 하며, 데이터를 빼는 동작을 'dequeue'라고 부른다.

 

주로 프린터의 출력 순서 알고리즘과 같이 이벤트의 실행 순서를 규칙적으로 만들기 위해 사용되는 큐는

 

태생적으로 LinkedList와 함께 사용된다.

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

Queue<Integer> queue = new LinkedList<>();	//Integer형 큐 선언

위와 같이 LinkedList와 Queue 클래스를 import 한 후 매개변수의 타입에 맞춰 선언하면 된다.

 

이어서 큐 클래스에서 자주 사용되는 메서드를 알아보자.

 

 

add(), offer()

 

add()와 offer()는 큐에 값을 추가하고 싶을 때 사용한다.

queue.add(1);     // queue에 값 1 추가
queue.add(2);     // queue에 값 2 추가
queue.offer(3);   // queue에 값 3 추가
queue.offer(4);   // queue에 값 4 추가

 

poll(), remove(), clear()

 

poll()과 remove()는 큐에서 값을 제거하고 싶을 때 사용한다.

 

큐 전체의 값을 제거하고 초기화하고 싶을 경우엔 clear()를 사용한다.

queue.add(1);     // queue에 값 1 추가
queue.add(2);     // queue에 값 2 추가
queue.offer(3);   // queue에 값 3 추가
queue.offer(4);   // queue에 값 4 추가

queue.poll();	  // 1 제거
queue.remove();   // 2 제거

queue.clear();	  // queue의 전체 값 제거(초기화)

위에서 소개했던 대로 입력된 순서대로 제거되는 것을 확인할 수 있다.

 

 

peek()

 

현재 큐에 있는 첫 번째 요소를 확인하고 싶을 때 사용한다.

queue.add(1);     // queue에 값 1 추가
queue.add(2);     // queue에 값 2 추가
queue.offer(3);   // queue에 값 3 추가
queue.offer(4);   // queue에 값 4 추가

queue.poll();	  // 1 제거
queue.remove();   // 2 제거

System.out.println(queue.peek());	// 3 출력

 

size()

 

현재 큐의 크기를 출력하고 싶을 때 사용한다.

queue.add(1);     // queue에 값 1 추가
queue.add(2);     // queue에 값 2 추가
queue.offer(3);   // queue에 값 3 추가
queue.offer(4);   // queue에 값 4 추가

queue.poll();	  // 1 제거
queue.remove();   // 2 제거

System.out.println(queue.size());	// 2 출력
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함