프로그래밍 공부
자바 컬렉션 - Queue, PriorityQueue 본문
Queue
****FIFO(First In First Out) 방식으로 작동하는 데이터 구조
자바에서는
Queue
인터페이스와 그 구현체인LinkedList
,ArrayDeque
등을 사용하여 큐를 구현예제
import java.util.LinkedList; import java.util.Queue; public class QueueExample { public static void main(String[] args) { Queue<Integer> queue = new LinkedList<>(); // 요소 추가 queue.add(1); queue.offer(2); queue.add(3); // 큐의 상태 출력 System.out.println("큐의 크기: " + queue.size()); // 큐의 크기 // 머리 요소 확인 System.out.println("머리 요소: " + queue.peek()); // 1 // 요소 제거 및 출력 while (!queue.isEmpty()) { System.out.println("제거된 요소: " + queue.poll()); } // 큐가 비어 있는지 확인 System.out.println("큐 비어 있음: " + queue.isEmpty()); // true } }
Priority Queue
각 요소에 우선순위가 부여되고, 가장 높은 우선순위를 가진 요소가 먼저 나오는 데이터 구조
자바에서는
PriorityQueue
클래스를 사용하여 구현할 수 있음.기본적으로 자연 순서에 따라 정렬되지만, 사용자 정의 Comparator를 통해 우선순위를 변경가능
예제
import java.util.PriorityQueue; import java.util.Comparator; public class PriorityQueueExample { // 사용자 정의 Comparator를 사용하여 우선순위 큐 생성 static class CustomComparator implements Comparator<Integer> { @Override public int compare(Integer a, Integer b) { return a - b; // 오름차순 정렬 (낮은 숫자가 높은 우선순위) } } // 우선순위 큐를 초기화하고 요소를 추가하는 함수 public static PriorityQueue<Integer> initializePriorityQueue() { PriorityQueue<Integer> priorityQueue = new PriorityQueue<>(new CustomComparator()); priorityQueue.offer(5); priorityQueue.offer(1); priorityQueue.offer(3); return priorityQueue; } // 우선순위 큐에서 요소를 제거하고 출력하는 함수 public static void processPriorityQueue(PriorityQueue<Integer> priorityQueue) { while (!priorityQueue.isEmpty()) { System.out.println(priorityQueue.poll()); // 우선순위가 높은 요소 제거 및 출력 } } public static void main(String[] args) { // 우선순위 큐 초기화 PriorityQueue<Integer> priorityQueue = initializePriorityQueue(); // 우선순위 큐 처리 processPriorityQueue(priorityQueue); } } // 실행 결과 1 3 5
'Programming > JAVA' 카테고리의 다른 글
자바 컬렉션 - 객체 정렬 (0) | 2024.10.09 |
---|---|
자바 컬렉션 - Map (0) | 2024.10.08 |
자바 컬렉션 - Set 인터페이스 (0) | 2024.10.08 |
자바 컬렉션 - List 인터페이스 (3) | 2024.10.08 |
자바 컬렉션(Java Collection Framework) (0) | 2024.10.08 |
Comments