본문 바로가기

자바의 정석 정리

자바의 정석 - 11.3 Stack과 Queue

  1. Stack과 Queue
    • 스택(Stack)은 마지막에 저장한 데이터를 가장 먼저 꺼내는 LIFO(Last In First Out)구조임
    • 큐(Queue)는 처음에 저장한 데이터를 가장 먼저 꺼내는 FIFO(First In First Out)구조임
    • 순차적으로 데이터를 추가하고 삭제하는 스택에는 ArrayList와 같은 배열기반의 컬렉션 클래스가 적합함
    • 는 항상 첫 번째 데이터를 삭제하므로 배열을 사용하면 항상 재배치가 일어나기 때문에 적합하지 않음
    • 때문에, 는 데이터의 추가/삭제가 쉬운 LinkedList가 적합함
  2. PriorityQueue
    • 저장한 순서에 관계없이 우선순위가 높은 것부터 꺼냄
    • null은 저장할 수 없음
    • PriorityQueue는 저장공간을 배열을 사용하며, 힙(Heap) 자료구조 형태로 저장함
    • 💡 힙은 이진 트리의 한 종류로 가장 큰 값이나 가장 작은 값을 빠르게 찾을 수 있음
  1. Deque(Double-Ended Queue)
    • 큐의 변형으로 양쪽 끝에 추가/삭제가 가능함
    • 구현체로 ArrayList와 LinkedList 등이 있음