Java ArrayDeque 클래스: 초보자를 위한 가이드

서론

안녕하세요, 미래의 자바 마법사들! 오늘은 자바의 ArrayDeque 클래스의 흥미로운 세계로 여행을 떠날 거예요. 이제 당신이 무슨 생각을 할지 알아요: "Deque? 그게 무슨 느낌 있는 프랑스어인가요?" 그렇지 않아요! 프로그래밍 세계에서는 deque(발음은 "deck")는 더블 엔드 퀘입니다. 그것은 카니발 라이드에서 사람들이 양쪽 끝에서 참여하거나 나가는 줄이 있을 때처럼요. 멋질 않나요?

Java -  ArrayDeque

ArrayDeque는 Deque 인터페이스의 자바 구현이며, 프로그래밍 도구-kit에 강력한 도구예요. 데이터 저장과 조작을 위한 스위스 Army 톱날과 같아요. 그럼, 안전벨트를 매고 같이 타요!

ArrayDeque 클래스 선언

ArrayDeque를 사용하기 전에 DECLARE하는 방법을 알아야 해요. 정말 간단해요. 이렇게 하면 됩니다:

import java.util.ArrayDeque;

ArrayDeque<Integer> numbers = new ArrayDeque<Integer>();

이 예제에서는 Integer 객체를 저장할 ArrayDeque를 만들고 있어요. 걱정 마세요, ArrayDeque는 유연해요 - 모든 객체 유형을 사용할 수 있어요!

ArrayDeque 클래스 생성자

ArrayDeque는 세 개의 생성자를 제공합니다. 생성자를 다양한 방법으로 덱을 만드는 것으로 생각하세요:

  1. ArrayDeque(): 초기 용량이 16개의 요소인 빈 덱을 만듭니다.
  2. ArrayDeque(int numElements): 지정된 초기 용량으로 덱을 만듭니다.
  3. ArrayDeque(Collection<? extends E> c): 지정된 컬렉션의 요소들로 덱을 만듭니다.

이제 이를 실제로 보여드릴게요:

// 기본 생성자
ArrayDeque<String> fruits1 = new ArrayDeque<>();

// 초기 용량이 있는 생성자
ArrayDeque<String> fruits2 = new ArrayDeque<>(20);

// 컬렉션을 갖는 생성자
ArrayList<String> fruitList = new ArrayList<>();
fruitList.add("Apple");
fruitList.add("Banana");
ArrayDeque<String> fruits3 = new ArrayDeque<>(fruitList);

ArrayDeque 클래스 메서드

이제 ArrayDeque에서 가장 일반적으로 사용되는 몇 가지 메서드를 살펴보겠습니다. 이 메서드들은 스위스 Army 톱날이 수행할 수 있는 다양한 트릭과 같아요.

메서드 설명
addFirst(E e) 덱의 앞쪽에 요소를 추가합니다
addLast(E e) 덱의 뒤쪽에 요소를 추가합니다
offerFirst(E e) 덱의 앞쪽에 요소를 추가합니다 (boolean을 반환합니다)
offerLast(E e) 덱의 뒤쪽에 요소를 추가합니다 (boolean을 반환합니다)
removeFirst() 첫 번째 요소를 제거하고 반환합니다
removeLast() 마지막 요소를 제거하고 반환합니다
pollFirst() 첫 번째 요소를 제거하고 반환합니다 (비어 있으면 null 반환)
pollLast() 마지막 요소를 제거하고 반환합니다 (비어 있으면 null 반환)
getFirst() 첫 번째 요소를 제거하지 않고 반환합니다
getLast() 마지막 요소를 제거하지 않고 반환합니다
peekFirst() 첫 번째 요소를 제거하지 않고 반환합니다 (비어 있으면 null 반환)
peekLast() 마지막 요소를 제거하지 않고 반환합니다 (비어 있으면 null 반환)

ArrayDeque에서 요소 추가 및 제거 예제

이제 새로운 지식을 실제 예제로 사용해 봅시다. 잠시 생각해보세요, 할 일 목록을 관리하는 것처럼, 작업이 양쪽 끝에서 추가되거나 제거될 수 있습니다.

import java.util.ArrayDeque;

public class ToDoList {
public static void main(String[] args) {
ArrayDeque<String> tasks = new ArrayDeque<>();

// 작업 추가
tasks.addFirst("기상");
tasks.addLast("이빨 닦기");
tasks.offerFirst("알람 설정");
tasks.offerLast("잠자리에 빠지기");

System.out.println("현재 작업: " + tasks);

// 작업 제거
String firstTask = tasks.removeFirst();
String lastTask = tasks.removeLast();

System.out.println("완료한 첫 번째 작업: " + firstTask);
System.out.println("완료한 마지막 작업: " + lastTask);
System.out.println("남은 작업: " + tasks);

// 작업 확인
String nextTask = tasks.peekFirst();
String finalTask = tasks.peekLast();

System.out.println("다음 작업: " + nextTask);
System.out.println("마지막 작업: " + finalTask);
}
}

이것을 분석해 봅시다:

  1. 우리는 tasks라는 ArrayDeque를 만들기 시작합니다.
  2. addFirst(), addLast(), offerFirst(), offerLast()를 사용하여 작업을 추가합니다. 우리가 덱의 양쪽 끝에 작업을 추가할 수 있음을 봅시다.
  3. removeFirst()removeLast()를 사용하여 양쪽 끝에서 작업을 제거합니다.
  4. 마지막으로, peekFirst()peekLast()를 사용하여 제거하지 않고 첫 번째와 마지막 작업을 확인합니다.

출력

이 코드를 실행하면 다음과 같은 결과를 볼 수 있습니다:

현재 작업: [알람 설정, 기상, 이빨 닦기, 잠자리에 빠지기]
완료한 첫 번째 작업: 알람 설정
완료한 마지막 작업: 잠자리에 빠지기
남은 작업: [기상, 이빨 닦기]
다음 작업: 기상
마지막 작업: 이빨 닦기

그리고 이렇게 끝! ArrayDeque를 만들고 조작하고 탐구한 거예요. 꽤 깔끔하죠?

기억해요, 연습이 실력을 만든다. 자신만의 ArrayDeque를 만들어 다양한 메서드를 실험해 보세요. 플레이리스트 관리자, 브라우저 히스토리 추적기, 아니면 간단한 언도/리두 시스템을 만들 수 있어요!

ArrayDeque는 좋은 친구와 같아요 - 필요할 때마다 있고, 양쪽에서 도와줄 준비가 되어 있어요. 그래서 부끄러워 말고, 더 잘 알아가보세요, 곧 프로처럼 덱을 사용할 수 있을 거예요!

코딩을 즐겁게, 미래의 자바 마스터들! ??

Credits: Image by storyset