프로그래밍 공부

자바 컬렉션 - Queue, PriorityQueue 본문

Programming/JAVA

자바 컬렉션 - Queue, PriorityQueue

khj1999 2024. 10. 8. 08:26

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