[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 기준으로 작성되었습니다.