본문 바로가기

공부의 기록/Data Structure

[자료 구조] Deque(Double-Ended Queue) - 자바

728x90

  • Front와 Rear 양쪽에서 삽입(enQueue)과 삭제(deQueue)가 가능한 자료 구조
  • Deque의 앞쪽으로 삽입하고, 뒤쪽으로 삭제하면 Queue처럼 사용할 수 있다. Deque의 앞쪽에 삽입하고 다시 앞쪽으로만 삭제하면 Stack처럼 사용할 수 있다.

⬛ 연산

  • addFirst(x) : 데이터 x를 덱의 Front에 추가, 용량을 초과하면 exception 발생
    • push(x)와 동일 → 덱을 스택으로 사용하고자 할 때 사용됨
  • offerFirst(x) : 데이터 x를 덱의 Front에 추가, 용량을 초과하면 false를 리턴
  • removeFirst() : 덱의 Front에 있는 데이터 삭제, 비어있으면 Exception 발생
    • pop()과 동일 → 덱을 스택으로 사용하고자 할 때 사용됨
    • remove()와 동일
  • poll() : 덱의 Front에 있는 데이터를 삭제, 비어있으면 null 리턴
  • addLast(x) : 데이터 x를 덱의 Rear에 추가, 용량을 초과하면 Exception 발생
    • add(x)와 동일
  • offerLast(x) : 데이터 x를 덱의 Rear에 추가, 용량을 초과하면 false를 리턴
    • offer(x)과 동일
  • removeLast() : 덱의 Rear에 있는 데이터를 삭제, 비어있으면 Exception 발생
  • pollLast() : 덱의 Rear에 있는 데이터를 삭제, 비어있으면 null 리턴
  • getFirst() : 덱의 First에 있는 데이터를 삭제하지 않고 리턴, 비어있으면 Exception 발생
  • getLast() : 덱의 Rear에 있는 데이터를 삭제하지 않고 리턴, 비어있으면 Exception 발생
  • peekFirst() : 덱의 First에 있는 데이터를 삭제하지 않고 리턴, 비어있으면 null 리턴
    • peek()과 동일
  • peekLast() : 덱의 Rear에 있는 데이터를 삭제하지 않고 리턴, 비어있으면 null 리턴
Deque<Integer> dq = new LinkedList<>();
dq.addFirst(1);
dq.addLast(2);
System.out.println(dq);
		
System.out.println(dq.peekFirst());
System.out.println(dq.peekLast());
		
dq.removeFirst();
dq.removeLast();
System.out.println(dq);

//[1, 2]
//1
//2
//[]
728x90