Language/Java

[Java] 자바 컬렉션 프레임워크 - Queue 컬렉션 클래스

재은초 2024. 4. 14. 20:32
반응형

Queue<E> 인터페이스

  • 클래스로 구현된 스택과는 달리 자바에서 큐 메모리 구조는 별도의 인터페이스 형태로 제공된다.
  • Queue 인터페이스를 상속받는 하위 인터페이스는 1. Deque<E>, 2. BlockingDeque<E>, 3. BlockingQueue<E>, 4. TransferQueue과 같다. 따라서 Queue 인터페이스를 직간접적으로 구현한 클래스는 상당히 많다. 그중에서도 Deque 인터페이스를 구현한 LinkedList 클래스가 큐 메모리 구조를 구현하는 데 가장 많이 사용된다.
  • 큐 메모리 구조는 선형 메모리 공간에 데이터를 저장하면서 선입선출(FIFO)의 시멘틱을 따르는 자료 구조다. 즉, 가장 먼저 저장된(push) 데이터가 가장 먼저 인출(pop)되는 구조다.

  • Queue 인터페이스는 큐 메모리 구조를 표현하기 위해, 다음과 같은 Collection 인터페이스 메소드만을 상속받아 사용한다.

  • 더욱 복잡하고 빠른 큐를 구현하고 싶다면 Deque 인터페이스를 구현한 ArrayDeque 클래스를 사용하면 된다.
Deque<Integer> qu = new ArrayDeque<Integer>();
  • Java SE 6부터 지원되는 ArrayDeque 클래스는 스택과 큐 메모리 구조를 모두 구현하는데 가장 적합한 클래스다.
LinkedList<String> qu = new LinkedList<String>(); // 큐의 생성
//Deque<String> qu = new ArrayDeque<String>();
 
// add() 메소드를 이용한 요소의 저장
qu.add("넷");
qu.add("둘");
qu.add("셋");
qu.add("하나");
 
// peek() 메소드를 이용한 요소의 반환
System.out.println(qu.peek());
System.out.println(qu);
 
// poll() 메소드를 이용한 요소의 반환 및 제거
System.out.println(qu.poll());
System.out.println(qu);
 
// remove() 메소드를 이용한 요소의 제거
qu.remove("하나");
System.out.println(qu);

 

Reference

반응형