Java ArrayList: 동적 컬렉션의 문

서론

안녕하세요, 미래의 Java 열정 가들! 오늘은 Java에서 가장 유용하고 다재다능한 도구 중 하나인 ArrayList에 대해 다룹니다. 파티를 조직하는 것을 상상해보세요. 얼마나 많은 친구들이 참석할지 모르겠죠? 고정된 수의 의자를 세웠다고 해도 더 많은 사람들이 오면 어떻게 되죠? 또는 더 나쁜 경우, 절반의 의자가 비어 있을까요? ArrayList는 프로그래밍 세계에서 이러한 문제를 해결하는 데 매우 유용합니다. 필요에 따라 커지거나 줄어들는 마법의 손님 명단과 같습니다!

Java - ArrayList

클래스 선언

기본적인 것부터 시작해보겠습니다. Java에서 ArrayList은 java.util 패키지의 일부입니다. 사용하려면 다음과 같이 임포트해야 합니다:

import java.util.ArrayList;

ArrayList 클래스는 다음과 같이 선언됩니다:

public class ArrayList<E> extends AbstractList<E>
implements List<E>, RandomAccess, Cloneable, Serializable

이것이 두려워하지 마세요. 점점 설명해드리겠습니다!

이 의미는 무엇인가요?

  • <E>: 이는 형식 매개변수입니다. ArrayList이 어떤 종류의 객체든 저장할 수 있다는 의미입니다. "이 ArrayList은 무엇인가 나중에 지정할 것이라는 의미입니다."
  • extends AbstractList<E>: ArrayList은 AbstractList라는 다른 클래스를 기반으로 합니다.
  • implements List<E>, RandomAccess, Cloneable, Serializable: ArrayList이 구현하는 인터페이스들이며, 특정 기능을 제공합니다.

클래스 생성자

ArrayList를 생성할 때는 세 가지 옵션이 있습니다:

  1. 빈 ArrayList를 생성합니다:

    ArrayList<String> friendsList = new ArrayList<>();
  2. 초기 용량을 가진 ArrayList를 생성합니다:

    ArrayList<Integer> numbers = new ArrayList<>(20);
  3. 다른 컬렉션에서 ArrayList를 생성합니다:

    ArrayList<Double> scores = new ArrayList<>(existingList);

첫 번째 예제에서는 새로운 친구 명단을 시작하는 것처럼 보입니다. 두 번째 예제에서는 20개의 숫자 목록을 준비하는 것처럼 보입니다. 세 번째는 기존의 손님 명단을 복사하여 새로운 명단을 시작하는 것과 같습니다.

클래스 메서드

ArrayList는 유용한 메서드가 가득한 도구箱을 가지고 있습니다. 일반적으로 사용되는 몇 가지 메서드를 살펴보겠습니다:

메서드 설명
add(E element) 리스트의 끝에 요소를 추가합니다
add(int index, E element) 지정된 위치에 요소를 추가합니다
get(int index) 지정된 위치의 요소를 반환합니다
set(int index, E element) 지정된 위치의 요소를 교체합니다
remove(int index) 지정된 위치의 요소를 제거합니다
size() 리스트에 있는 요소의 수를 반환합니다
clear() 리스트의 모든 요소를 제거합니다
contains(Object o) 리스트에 지정된 요소가 있는지 여부를 반환합니다

이 메서드들은 다양한 파티 트릭과 같습니다. 손님을 추가하거나,��인지 확인하거나, 친절하게 누구를 떠나게 하는 것입니다!

상속된 메서드

ArrayList는 부모 클래스와 인터페이스에서 메서드를 상속받습니다. 주목할 만한 몇 가지는 다음과 같습니다:

  • AbstractList에서: iterator(), listIterator()
  • AbstractCollection에서: toString(), isEmpty()
  • Object에서: clone(), equals(), hashCode()

이러한 것들은 ArrayList와 함께 제공되는 보너스 기능들입니다!

문자열 ArrayList에 요소 추가/제거 예제

지식을 실제로 실천해보겠습니다. 독서 목록을 관리하기 위해 ArrayList를 생성합니다:

import java.util.ArrayList;

public class ReadingList {
public static void main(String[] args) {
// 책 제목을 저장하기 위한 ArrayList를 생성합니다
ArrayList<String> bookList = new ArrayList<>();

// 목록에 책을 추가합니다
bookList.add("To Kill a Mockingbird");
bookList.add("1984");
bookList.add("The Great Gatsby");

System.out.println("초기 독서 목록: " + bookList);

// 지정된 위치에 새로운 책을 추가합니다
bookList.add(1, "Pride and Prejudice");

System.out.println("새로운 책을 추가한 후: " + bookList);

// 책을 제거합니다
bookList.remove("1984");

System.out.println("책을 제거한 후: " + bookList);

// 목록에 책이 있는지 확인합니다
String searchBook = "The Great Gatsby";
if (bookList.contains(searchBook)) {
System.out.println(searchBook + "는(는) 여러분의 독서 목록에 있습니다!");
} else {
System.out.println(searchBook + "는(는) 여러분의 독서 목록에 없습니다.");
}

// 목록의 크기를 가져옵니다
System.out.println("여러분의 독서 목록에 " + bookList.size() + "권의 책이 있습니다.");
}
}

설명해보겠습니다:

  1. String 객체(책 제목)을 저장하기 위해 bookList라는 ArrayList를 생성합니다.
  2. add() 메서드를 사용하여 세 권의 책을 추가합니다.
  3. System.out.println()을 사용하여 초기 목록을 인쇄합니다. ArrayList의 toString() 메서드가 자동으로 호출됩니다.
  4. add(int index, E element)를 사용하여 인덱스 1(두 번째 위치)에 "Pride and Prejudice"를 추가합니다.
  5. remove() 메서드를 사용하여 "1984"를 제거합니다.
  6. contains()를 사용하여 "The Great Gatsby"가 목록에 있는지 확인합니다.
  7. 마지막으로 size()를 사용하여 목록에 있는 책의 수를 가져옵니다.

출력

이 프로그램을 실행하면 다음과 같은 결과를 볼 수 있습니다:

초기 독서 목록: [To Kill a Mockingbird, 1984, The Great Gatsby]
새로운 책을 추가한 후: [To Kill a Mockingbird, Pride and Prejudice, 1984, The Great Gatsby]
책을 제거한 후: [To Kill a Mockingbird, Pride and Prejudice, The Great Gatsby]
The Great Gatsby는 여러분의 독서 목록에 있습니다!
여러분의 독서 목록에 3권의 책이 있습니다.

그리고 이렇게 하면 ArrayList를 생성하고, 조작하고, 탐구할 수 있습니다. 책 클럽 파티를 조직하고, 새로운 제목을 추가하고, 다 읽은 책을 제거하고, 독서 모험을 추적하는 것과 같습니다.

기억해주세요, ArrayList는 매우 유연합니다. 수학, 사용자 정의 객체, 심지어 다른 ArrayList들을 관리하기 위해 사용할 수 있습니다! Java 여정을 계속하면서 ArrayList가 프로그래밍 도구 상자에서 가장 신뢰할 수 있는 도구 중 하나가 될 것입니다.

그래서 계속 연습하고, 코딩하고, 가장 중요한 것은 Java를 즐기세요!谁知道? 아마도 다음 큰 프로젝트에서 ArrayList를 사용하여 세상을 바꾸는 건 아닐까요? 한 번의 동적 목록에 이루어질 수 있습니다!

Credits: Image by storyset