반응형

🚀

덱(Deque)은 Double Ended Queue의 줄임말로 큐의 양쪽에서 삽입과 삭제를 수행할 수 있는 자료구조입니다.

 

⭐️ Deque 선언

Deque<Integer> deque = new LinkedList<>();

Integer형 선언

 

⭐️ Deque에 값 삽입

add()
addFirst()
addLast()
offer()
offerFirst()
offerLast()
  • add()
    마지막에 원소 삽입
    용량 초과 시 예외 발생
  • addFirst()
    맨 앞에 원소 삽입
    용량 초과 시 예외 발생
  • addLast()
    마지막에 원소 삽입
    용량 초과 시 예외 발생

  • offer()
    마지막에 원소 삽입
    삽입 성공 시 true, 용량 제한에 걸리는 경우 false 반환
  • offerFirst()
    맨 앞에 원소 삽입
    삽입 성공 시 true, 용량 제한에 걸리는 경우 false 반환
  • offerLast()
    마지막에 원소 삽입
    삽입 성공 시 true, 용량 제한에 걸리는 경우 false 반환

 

⭐️ Deque에 값 삭제

remove()
removeFirst()
removeLast()
poll
pollFirst()
pollLast()
  • remove()
    맨 앞의 원소 제거 후 해당 원소를 리턴
    덱이 비어있는 경우 예외 발생
  • removeFirst()
    맨 앞의 원소 제거 후 해당 원소를 리턴
    덱이 비어있는 경우 예외 발생
  • removeLast()
    마지막 원소 제거 후 해당 원소를 리턴
    덱이 비어있는 경우 예외 발생
  • poll
    맨 앞의 원소 제거 후 해당 원소를 리턴
    덱이 비어있는 경우 null 리턴
  • pollFirst()
    맨 앞의 원소 제거 후 해당 원소를 리턴
    덱이 비어있는 경우 null 리턴
  • pollLast()
    마지막 원소 제거 후 해당 원소를 리턴
    덱이 비어있는 경우 null 리턴

 

⭐️ Deque 원소 확인

getFirst()
getLast()
peek()
peekFirst()
peekLast()
  • getFirst()
    맨 앞의 원소를 리턴
    덱이 비어있는 경우 예외 발생
  • getLast()
    마지막 원소를 리턴
    덱이 비어있는 경우 예외 발생
  • peek()
    맨 앞의 원소를 리턴
    덱이 비어있는 경우 null 리턴
  • peekFirst()
    맨 앞의 원소를 리턴
    덱이 비어있는 경우 null 리턴
  • peekLast()
    마지막 원소를 리턴
    덱이 비어있는 경우 null 리턴

 

⭐️ 기타

  • removeFirstOccurrence(x)
    덱의 맨 앞부터 탐색하여 x와 동일한 첫 원소를 제거
    동일한 원소가 없을 시 덱이 변경되지 않음 
  • removeLastOccurrence(x)
    덱의 마지막부터 탐색하여 x와 동일한 첫 원소를 제거
    동일한 원소가 없을 시 덱이 변경되지 않음 

  • element() == removeFirst()
  • addFirst() == push()
  • removeFirst() == pop()
  • remove(x)
    removeFirstOccurrence(x)와 동일
  • contains(x)
    덱에 x와 동일한 원소가 있는지 true 혹은 false 반환
  • size()
    덱의 원소 개수 리턴
  • iterator()
    덱의 반복자(iterator) 반환
  • isEmpty()
    덱이 비어있는지 true 혹은 false 반환

 

⭐️ 덱 순회 방법

import java.util.*;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		StringBuffer sb = new StringBuffer();
		Deque<Integer> deque = new LinkedList<>();

		deque.add(3);
		deque.add(7);
		deque.add(5);

		for (int de : deque) {
			System.out.print(de + " ");
		}

		System.out.println();

		for (Iterator<Integer> it = deque.iterator(); it.hasNext();) {
			System.out.print(it.next() + " ");
		}

		System.out.println();

		Iterator<Integer> it = deque.iterator();
		while (it.hasNext()) {
			System.out.print(it.next() + " ");
		}
	}
}

 

 

 

 

반응형

+ Recent posts