## 큐(Queue):
// - 데이터를 선입선출(FIFO, First-In-First-Out) 방식으로 저장하고 관리
// - 주로 데이터의 순서를 보존하고 처리할 때 사용되며, 다양한 응용 분야에서 유용하게 활용됨
// - 아메 주문을 받은데, 얼음을 주르륵 만들고... 이런게 아니라, "하나만들고 결제하고.. 하나만들고 결제하고..."
//
# 특징:
//
// 1. 선입선출 (FIFO): 가장 먼저 추가된 요소가 가장 먼저 제거됩니다.
// 이러한 특성은 대기열(Queue)에서 요소를 처리하는 데 매우 유용합니다.
//
// 2. 요소 추가 및 제거: 주로 enqueue (요소 추가=add)와 dequeue (요소 제거=poll) 연산을 통해 데이터를 관리합니다.
//
// 3. 한쪽 끝에서 추가, 다른 한쪽 끝에서 제거: 요소는 보통 큐의 한쪽 끝에서 추가되고, 반대쪽 끝에서 제거됩니다.
//
// 4. 다양한 응용: 큐는 작업 대기열, 프로세스 스케줄링, 이벤트 처리, 데이터 버퍼링, 그래프 탐색 (너비 우선 탐색, BFS) 등의 다양한 응용 분야에서 사용됩니다.
// ====================================================
// 아쉽게도 개인 클래스가 없어서 이런식으로.....구현...
// LinkedList 클래스는 큐(Queue)를 상속받은 것이 아니라,
// 큐 인터페이스(java.util.Queue)를 구현한 클래스 중 하나임!!!!
Queue<String> queue = new LinkedList<>();
// 요소 추가
queue.add("첫 번째 요소");
queue.add("두 번째 요소");
queue.add("세 번째 요소");
// 요소 제거 및 출력
while (!queue.isEmpty()) {
String element = queue.poll();
System.out.println("제거된 요소: " + element);
}
// ---> add로 요소를 추가하고 poll로 요소를 제거하며 선입선출(FIFO) 방식을 따름!
## 예시
// LinkedList<String> queueList = new LinkedList<>();
// --> 문법적으로는 맞으나....
// --> 이렇게 생성된 linkedList 객체는 큐 역할을 하지 않고, 연결 리스트로 사용됨
Queue<String> queueList = new LinkedList<>();
queueList.offer("안녕1");
queueList.offer("안녕2");
queueList.offer("안녕3");
queueList.offer("안녕4");
queueList.offer("안녕5");
String poll = queueList.poll(); // 아메 주문을해 나는 한번에 하나밖에 못해(결제까지 다한다구)
System.out.println(poll); // 출력 : 안녕1 (= 삭제될 요소)
System.out.println("==== poll이 맨앞에 주문을 받아서 안녕1 손님이 집갔다구 ==== ");
for(String removePoll : queueList) { // 출력 : 안녕2~5
System.out.println(removePoll);
}
'JAVA > DAY 19 _ 23.09.12' 카테고리의 다른 글
자료구조 summary, 시간복잡도 (0) | 2023.09.12 |
---|---|
HashMap2 (0) | 2023.09.12 |
HashMap (4) | 2023.09.12 |
Set (0) | 2023.09.12 |
(collection framework의) Stack (0) | 2023.09.12 |