[java] 자바 큐 인터페이스와 데크의 차이
자바에서 큐(Queue)와 데크(Deque)는 데이터를 저장하고 관리하는 데 사용되는 두 가지 인터페이스이다. 이 두 인터페이스 간에는 몇 가지 중요한 차이점이 있습니다.
1. 큐(Queue)
큐는 FIFO(선입선출) 구조를 따르는 자료구조로, 데이터는 마지막에 추가된 것이 먼저 제거된다. 자바에서는 java.util.Queue
인터페이스를 사용하여 큐를 구현한다. Queue
인터페이스의 주요 메서드는 다음과 같다.
add(E e)
: 요소를 큐에 추가하고 성공적으로 추가된 경우true
를 반환한다.offer(E e)
: 요소를 큐에 추가한다.remove()
: 큐에서 요소를 제거하고 해당 요소를 반환한다.poll()
: 큐에서 요소를 제거하고 해당 요소를 반환하며, 큐가 비어있는 경우null
을 반환한다.element()
: 큐의 첫 번째 요소를 반환하고 큐를 변경하지 않는다.peek()
: 큐의 첫 번째 요소를 반환하며, 큐가 비어있는 경우null
을 반환한다.
2. 데크(Deque)
데크(Deque)는 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조이다. 자바에서는 java.util.Deque
인터페이스를 사용하여 데크를 구현한다. Deque
인터페이스는 Queue
인터페이스를 상속받으므로 큐의 모든 기능을 포함하면서, 양쪽에서의 삽입, 삭제, 검색 등의 작업이 가능하다.
Deque
인터페이스의 몇 가지 주요 메서드는 다음과 같다.
addFirst(E e)
: 데크의 맨 앞에 요소를 추가한다.addLast(E e)
: 데크의 맨 뒤에 요소를 추가한다.offerFirst(E e)
: 데크의 맨 앞에 요소를 추가한다.offerLast(E e)
: 데크의 맨 뒤에 요소를 추가한다.removeFirst()
: 데크의 맨 앞의 요소를 제거하고 반환한다.removeLast()
: 데크의 맨 뒤의 요소를 제거하고 반환한다.pollFirst()
: 데크의 맨 앞의 요소를 제거하고 반환하며, 데크가 비어있는 경우null
을 반환한다.pollLast()
: 데크의 맨 뒤의 요소를 제거하고 반환하며, 데크가 비어있는 경우null
을 반환한다.getFirst()
: 데크의 맨 앞의 요소를 반환하며, 데크를 변경하지 않는다.getLast()
: 데크의 맨 뒤의 요소를 반환하며, 데크를 변경하지 않는다.peekFirst()
: 데크의 맨 앞의 요소를 반환하며, 데크가 비어있는 경우null
을 반환한다.peekLast()
: 데크의 맨 뒤의 요소를 반환하며, 데크가 비어있는 경우null
을 반환한다.
3. 결론
큐는 FIFO 구조를 가지고 있어 데이터를 순차적으로 처리할 때 유용하며, 데크는 양쪽 끝에서의 삽입과 삭제가 가능하므로 다양한 상황에서 유연하게 활용할 수 있다. 프로그램의 요구 사항에 맞게 적절한 자료구조를 선택하여 사용해야 한다.
위의 정보는 자바 11 기준으로 작성되었습니다.