저번 포스팅에서는 자료구조 중 Stack에 대해서 알아보았는데요!
오늘은 자료구조 큐(Queue)에 대해서 알아보겠습니다!
Queue 이란?
큐(Queue)는 컴퓨터의 기본적인 자료구조의 한 가지로, 먼저 집어넣은 게 먼저 나오는 FIFO(First In First Out) 구조로 저장하는 형식을 말합니다
처음 큐를 접하면 이 말이 "도통 무슨 말인가?" 할 거예요! 그림으로 간단히 설명드리면~
그림과 같이 상자(큐)에 물건(데이터)을 넣는다고 가정하면 가장 먼저 넣은 것을 가장 먼저 꺼낼 수 있습니다.
일상생활에서 예시를 들면, KFC에 햄버거를 먹으려고 줄을 서면 가장 먼저 선 사람이 가장 먼저 구매할 수 있겠죠?? ㅎ 이해되시나요~~?
정리해보면, 큐는 스택(Stack)과 반대되는 개념으로 한쪽에서만 입력이 이루어지고, 다른 쪽 끝에서는 출력만이 이루어지는 구조입니다.
큐에 자료를 넣는 것을 인큐(Enqueue)라고 하고 반대로 넣어둔 자료를 꺼내는 것을 디큐(Dequeue)이라고 합니다. 이때 꺼내지는 자료는 가장 먼저 입력한 자료부터 나오게 됩니다.
큐(Queue) 특성
- 가장 먼저 들어간 것이 먼저 나오는 FIFO(First In First Out) 구조
- 큐는 한쪽 끝을 Front로 정해 삭제 연산만이 수행됨
- 큐의 다른 쪽 끝을 Rear로 정하여 삽입 연산만 수행됨
- 그래프의 넓이 우선 탐색(BFS)에 사용됨
Java Queue 사용법
import java.util.LinkedList; // <<-- List Class
import java.util.Queue; // <-- Queue class
/* init Queue */
Queue<Integer> queue = new LinkedList<>();
Java에서는 java.util.Queue 큐 클래스를 임포트 하면 Queue를 사용할 수 있습니다.
큐는 리스트로 구현이 되어 있어서 java.util.LinkedList 클래스도 임포트 해줘야 합니다!
[예제]
package project;
import java.util.LinkedList; // <<-- List Class
import java.util.Queue; // <-- Queue class
public class Main {
public static void main(String[] args) {
/* init Queue */
Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
queue.add(3);
System.out.println("****** Data Enqueue ******");
for(Integer integer : queue){
System.out.println(integer);
}
System.out.println("****** Data Dequeue ******");
System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println(queue.poll());
}
}
예제를 보면 큐를 생성하고, Enqueue(add함수)와 Dequeue(poll함수)를 통해 데이터를 넣고 빼는 것을 확인할 수 있습니다.
이 뿐만 아니라 큐에서 다양한 기능을 제공하는 함수들이 있습니다.
✔ 데이터 추가 : add(), offer()
✔ 데이터 삭제 : poll(), remove()
✔ 큐 초기화 : clear()
✔ 첫 번째 값 참조 : peek()
아래 링크에서 필요한 함수들을 사용해보세요~
오늘은 자료구조 중 큐(Queue)를 알아보았습니다.
감사합니다
'💻 IT > 📌 Java' 카테고리의 다른 글
[JAVA] Map 이란? Java Map 사용법(HashMap, TreeMap, LinkedHashMap) (16) | 2022.05.26 |
---|---|
[Java] Set 이란 ? Java Set 사용법 (14) | 2022.04.06 |
[Java] Stack 이란 ? 스택(Stack) 사용법 (4) | 2022.04.01 |
[Java] List to Array :: 자바 리스트를 배열로 변환하기 (3) | 2022.03.31 |
[JAVA] Array To List :: 배열을 리스트로 변환하는 방법 (6) | 2022.03.29 |