queue: LIFO로 다양하게 구현하는 방법이 존재 & 항상 import java.util.*;가 필요


1. LinkedList : 일반 > ArrayList : 시간 오래 걸림

  • Queue<Integer> queue = new LinkedList<>();
  • queue.offer(1); queue.poll(); queue.isEmpty();

=> 위 3가지 메소드는 Queue의 기본 메소드로, 어떤 new를 사용하던지 공통적으로 사용 가능

 

2. PriorityQueue : Queue vs PriorityQueue

  • Queue<Integer> queue = new PriorityQueue<>();
  • queue.offer(1); / queue.poll(); : 기본적으로 가장 작은 값이 우선

 

  • PriorityQueue<String[]> queue = new PriorityQueue<>();
  • 간단한 우선 순위 설정 
  • new PriorityQueue<>(Comparator.comparing(Triple::getFirst).reversed().thenComparing(Triple::getSecond).thenComparing(Triple::getThird));​
import java.util.*;

public class Main {
    public static void main(String[] args) {
        PriorityQueue<String[]> queue = new PriorityQueue<>(new Comparator<String[]>() {
            @Override
            public int compare(String[] a, String[] b) {
                // 여기서 우선순위를 설정합니다.
                // 예를 들어, 문자열의 길이를 기준으로 정렬하도록 하겠습니다.
                return a[0].length() - b[0].length();
            }
        });

        // 요소 추가
        queue.offer(new String[]{"apple"});
        queue.offer(new String[]{"banana"});
        queue.offer(new String[]{"orange"});

        // 우선순위가 가장 높은 요소 확인 (peek)
        String[] highestPriority = queue.peek();
        System.out.println("가장 우선순위가 높은 요소: " + Arrays.toString(highestPriority));
    }
}

 

3. ArrayDeque : 효율적인 메모리 사용과 높은 성능

  • Queue<Integer> queue = new ArrayDeque<>(); => 위 3가지 메소드
  • ArrayDeque<Integer> deque = new ArrayDeque<>();=> addFirst(Last)(x); deque.removeFirst(Last);
import java.util.ArrayDeque;

public class ArrayDequeExample {
    public static void main(String[] args) {
        ArrayDeque<Integer> deque = new ArrayDeque<>();

        // 앞과 뒤에서 요소 추가
        deque.addFirst(1); // 앞에 1 추가
        deque.addLast(2); // 뒤에 2 추가

        // 앞과 뒤에서 요소 제거
        int first = deque.removeFirst(); // 앞에서 요소 제거 및 반환 (1 반환)
        int last = deque.removeLast(); // 뒤에서 요소 제거 및 반환 (2 반환)

        System.out.println("First: " + first); // 출력: First: 1
        System.out.println("Last: " + last); // 출력: Last: 2
    }
}

+ Recent posts