Java ArrayList: 동적 컬렉션의 문
서론
안녕하세요, 미래의 Java 열정 가들! 오늘은 Java에서 가장 유용하고 다재다능한 도구 중 하나인 ArrayList에 대해 다룹니다. 파티를 조직하는 것을 상상해보세요. 얼마나 많은 친구들이 참석할지 모르겠죠? 고정된 수의 의자를 세웠다고 해도 더 많은 사람들이 오면 어떻게 되죠? 또는 더 나쁜 경우, 절반의 의자가 비어 있을까요? 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를 생성할 때는 세 가지 옵션이 있습니다:
-
빈 ArrayList를 생성합니다:
ArrayList<String> friendsList = new ArrayList<>();
-
초기 용량을 가진 ArrayList를 생성합니다:
ArrayList<Integer> numbers = new ArrayList<>(20);
-
다른 컬렉션에서 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() + "권의 책이 있습니다.");
}
}
설명해보겠습니다:
- String 객체(책 제목)을 저장하기 위해
bookList
라는 ArrayList를 생성합니다. -
add()
메서드를 사용하여 세 권의 책을 추가합니다. -
System.out.println()
을 사용하여 초기 목록을 인쇄합니다. ArrayList의toString()
메서드가 자동으로 호출됩니다. -
add(int index, E element)
를 사용하여 인덱스 1(두 번째 위치)에 "Pride and Prejudice"를 추가합니다. -
remove()
메서드를 사용하여 "1984"를 제거합니다. -
contains()
를 사용하여 "The Great Gatsby"가 목록에 있는지 확인합니다. - 마지막으로
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