Information Security Study

Deque 개념 및 예제 본문

Programming/JAVA

Deque 개념 및 예제

gayeon_ 2024. 9. 17. 13:02

Deque

  • Queue의 형태에서 양방향 삽입, 반환할 수 있는 자료구조
  • LIFO, FIFO와 같이 동작하지 않는다.
  • 양방향 끝이 아닌 중간 데이터의 삽입, 삭제 불가능
  • 선언 시 LinkedList 또는 ArrayDeque 사용

 

 

삽입 연산

  • add(): 마지막에 원소 삽입
  • addFirst(): 맨 앞에 원소 삽입
  • addLast(): 마지막에 원소 삽입
  • offer(): 마지막에 원소 삽입
  • offerFirst(): 맨 앞에 원소 삽입
  • offerLast(): 마지막에 원소 삽입

 

 

삭제 연산

  • remove(): 맨 앞의 원소 반환 및 제거
  • removeFist(): remove()와 상동
  • removeLast(): 마지막 원소 반환 및 제거
  • poll: 맨 앞의 원소 반환 및 제거
  • pollLast(): 마지막 원소 반환 및 제거

 

삽입은 기본적으로 뒤에서 이뤄지고

삭제는 앞에서 수행한다.

 

 

값 확인

  • getFirst(): 맨 앞의 원소 출력
  • getLast(): 마지막 원소 출력
  • peek(): 맨 앞의 원소 출력
  • peekFirst(): 맨 앞의 원소 출력
  • peekLast(): 마지막 원소 출력

 

 

Deque 예제

import java.util.Deque;
import java.util.ArrayDeque;

public class DequeExample {
    public static void main(String[] args) {
        // Deque를 ArrayDeque로 구현
        Deque<String> deque = new ArrayDeque<>();

        // 요소 추가
        deque.add("First");
        deque.addLast("Last"); // 큐의 끝에 추가
        deque.addFirst("New First"); // 큐의 앞에 추가

        // 큐의 요소 출력
        System.out.println("Deque: " + deque);

        // 큐의 앞에서 요소 제거
        String removedFirst = deque.removeFirst();
        System.out.println("Removed First: " + removedFirst);

        // 큐의 뒤에서 요소 제거
        String removedLast = deque.removeLast();
        System.out.println("Removed Last: " + removedLast);

        // 현재 큐 상태 출력
        System.out.println("Deque after removals: " + deque);

        // 큐의 앞 요소 확인 (삭제하지 않음)
        String peekFirst = deque.peekFirst();
        System.out.println("Peek First: " + peekFirst);

        // 큐의 뒤 요소 확인 (삭제하지 않음)
        String peekLast = deque.peekLast();
        System.out.println("Peek Last: " + peekLast);
    }
}

 

 

출력 결과

Deque: [New First, First, Last]
Removed First: New First
Removed Last: Last
Deque after removals: [First]
Peek First: First
Peek Last: First