Java의 ArrayList: 초보자를 위한 소개[2022]
게시 됨: 2022-11-22배열은 크기가 고정되어 있다는 한 가지 단점이 있는 모든 프로그래밍 언어에서 광범위하고 필수적인 데이터 구조입니다. Java의 ArrayList가 이를 어떻게 도울 수 있는지 살펴보겠습니다.
배열은 정적 배열 또는 동적 배열의 두 가지 유형일 수 있습니다. Java와 같은 프로그래밍 언어에서는 배열을 동적으로 늘릴 수 없습니다. 대신 배열 초기화 중에 배열 크기가 선언됩니다. 그러나 많은 경우에 이로 인해 많은 문제가 발생할 수 있습니다. 이 문제를 해결하기 위해 Java에서는 ArrayList를 사용합니다. 요소가 ArrayList에 푸시되면 배열 크기가 자동으로 증가합니다.
이 기사에서는 Java의 ArrayList에 대해 배웁니다. Array와 ArrayList의 핵심 차이점을 이해하고 다양한 유형의 ArrayList와 이를 사용하는 방법에 대해서도 배웁니다.
배열 대 ArrayList
Array와 ArrayList의 주요 차이점은 Array의 크기는 정적이지만 ArrayList 크기는 동적일 수 있다는 것입니다. 배열이 고정되어 있으므로 배열을 반복하는 데 걸리는 시간은 동적 배열보다 적습니다.
그들 사이에는 몇 가지 차이점이 더 있습니다.
- 정적 배열은 단일 또는 다차원일 수 있지만 ArrayList는 단일 차원만 가능합니다.
- 배열은 Java에서 사용할 수 있는 기본 데이터 구조입니다. 그러나 ArrayList는 Java의 Collection Framework API의 일부입니다. 어레이 위에 구축됩니다.
- 원시 데이터 유형으로 배열을 선언할 수 있습니다. 원시 데이터 유형은 ArrayList에서 사용할 수 없습니다. 기본 데이터 유형을 사용하려면 데이터 유형의 해당 래퍼 클래스를 사용해야 합니다.
Java의 ArrayList 유형
ArrayList는 모든 유형이 될 수 있습니다. 그러나 ArrayList에서 기본 데이터 유형을 전달할 수 없기 때문에 해당 래퍼 클래스를 전달해야 합니다.
Integer
또는 String
과 같은 래퍼 클래스를 전달하여 정수 또는 문자열 유형과 같은 간단한 데이터 유형을 추가할 수 있습니다.
ArrayList의 ArrayList, 해시맵 등과 같은 복합 유형을 전달할 수도 있습니다.
ArrayList 내에서 사용자 지정 클래스를 사용하는 예를 살펴보겠습니다.
import java.util.ArrayList; class User { private String name; private int age; public User(String name, int age) { this.name = name; this.age = age; } public void getUser() { System.out.println("Name: " + name + " Age: " + age); } } class Main { public static void main(String[] args) { ArrayList<User> users = new ArrayList<>(); users.add(new User("Subha", 25)); users.add(new User("Dan", 32)); users.forEach(user -> { user.getUser(); }); } } Output: Name: Subha Age: 25 Name: Dan Age: 32
위의 코드 샘플에서 User
유형의 ArrayList가 생성됩니다. 아래 예에서 사용된 방법에 대해 자세히 알아봅니다.
Java에서 ArrayList 만들기
Java에서 ArrayList의 기본 사항을 이미 이해했습니다. 이제 ArrayList의 구문을 살펴보고 Java 코드에서 어떻게 사용할 수 있는지 살펴보겠습니다.
ArrayList<Type> listName = new ArrayList<>();
위 스니펫은 ArrayList를 정의하는 구문을 보여줍니다. Type
은 ArrayList의 유형을 정의합니다. 예를 들어 정수 데이터 유형의 ArrayList를 선언하려는 경우 <Integer>
를 전달할 수 있습니다. 기본 데이터 유형이므로 int
를 전달할 수 없습니다.
또한 프로그램에서 ArrayList를 사용하려면 java.util.ArrayList
를 가져와야 합니다. 다음은 ArrayList를 선언하는 프로그램의 기본 예입니다.
import java.util.ArrayList; class Main { public static void main(String[] args) { // Declare An ArrayList ArrayList<String> rainbow = new ArrayList<>(); System.out.println(rainbow); } } Output: []
위의 코드에서 String
유형의 rainbow
라는 이름의 ArrayList가 선언됩니다.
ArrayList로 작업하기 위해 여러 가지 방법을 사용할 수 있습니다. 몇 가지 방법을 살펴보겠습니다.
add
방법
ArrayList 클래스는 요소 추가 또는 제거, 값 가져오기, 특정 위치에 값 설정, ArrayList 지우기 등과 같은 작업을 수행하기 위한 다양한 메서드를 제공합니다.
우리가 보게 될 첫 번째 방법은 add
방법입니다.
add
메소드는 ArrayList
에 단일 항목을 추가하는 데 사용됩니다. add
구문은 다음과 같습니다.
arrayList.add(int i, Element)
이제 구문을 이해합시다. 첫 번째 매개변수 i
는 추가하려는 항목이 있는 인덱스 위치를 나타내는 선택적 매개변수입니다. 두 번째 매개변수 Element
는 추가하려는 요소입니다. 이제 예를 살펴보겠습니다.
rainbow.add("Violet"); System.out.println(rainbow); Output: [Violet] rainbow.add(0, "Red"); System.out.println(rainbow); Output: [Red, Violet]
rainbow.add("Violet")
는 ArrayList의 끝에 요소를 추가합니다. 그리고 rainbow.add(0, "Red")
는 ArrayList의 인덱스 위치 0
에 Red
요소를 추가합니다. add()
메서드는 항목이 성공적으로 삽입되면 true
를 반환합니다.
get
메서드
get
메소드는 ArrayList에서 지정된 위치의 값을 가져오는 데 사용됩니다.

arrayList.get(int i);
위 구문에 표시된 i
는 인덱스 위치입니다. 예를 들어 인덱스 위치 1
에서 항목을 가져오려면 arrayList.get(1)
을 작성하십시오.
rainbow.add("Violet"); rainbow.add(0, "Red"); String color = rainbow.get(1); System.out.println(color); Output: Violet
위의 코드는 ArrayList rainbow
에서 Violet
을 반환합니다.
set
방법
set
메소드는 항목의 값을 대체하는 데 사용됩니다. 예를 들어 인덱스 위치 0
에 있는 항목의 값을 바꾸려면 rainbow
라는 ArrayList가 있다고 가정하고 rainbow.set(0, "Purple")
을 작성합니다.
set
메서드의 구문은 다음과 같습니다.
arrayList.set(int i, Element);
여기서 i
는 인덱스 위치이고 Element
는 새 요소의 값입니다.
rainbow.add("Violet"); System.out.println(rainbow); Output: [Violet] rainbow.add(0, "Red"); System.out.println(rainbow); Output: [Red, Violet] rainbow.set(1, "Purple"); System.out.println(rainbow); Output: [Red, Purple]
위의 예에서는 rainbow
라는 ArrayList에 두 개의 값을 추가합니다. 먼저 Violet
요소가 추가된 다음 ArrayList의 위치 0
에 Red
항목을 추가합니다. 이 시점에서 전체 ArrayList는 [Red, Violet]
과 같습니다.
이제 인덱스 위치 1
의 요소는 set
메서드를 사용하여 Purple
값으로 대체됩니다. 값을 바꾼 후 ArrayList는 [Red, Purple]
과 같이 표시됩니다.
remove
방법
ArrayList remove
메소드는 ArrayList에서 값을 제거하는 데 사용됩니다. 제거하려는 값의 값 또는 인덱스 위치를 전달할 수 있습니다. remove
메서드의 구문은 다음과 같습니다.
arrayList.remove(Object value); // or arrayList.remove(int i);
방법을 더 잘 이해하기 위해 예를 들어 보겠습니다. [Violet, Red, Green]
값을 가진 rainbow
라는 ArrayList가 있다고 가정합니다. 이제 ArrayList에서 Red
를 제거하려면 rainbow.remove("Red");
. rainbow
ArrayList에서 이 메서드를 호출하면 Red
요소가 제거됩니다.
// rainbow = [Violet, Red, Green] rainbow.remove("Red"); System.out.println(rainbow); Output: [Violet, Green]
인덱스 위치를 전달하여 인덱스 위치에 있는 항목을 제거할 수도 있습니다.
//rainbow = [Red, Green] rainbow.remove(0); // Remove item at index position 0 System.out.println(rainbow); Output: [Green]
clear
방법
이름에서 알 수 있듯이 clear
메서드는 ArrayList에서 모든 요소를 제거합니다. 구문은 간단하며 매개변수를 사용하지 않습니다.
arraylist.clear()
예를 들어 보겠습니다.
rainbow.clear(); System.out.println(rainbow); Output: []
clear
메서드는 값을 반환하지 않습니다. 대신 주어진 ArrayList의 값을 지웁니다.
size
방법
size
메서드는 주어진 ArrayList의 크기를 반환합니다. 이 메서드는 매개 변수도 사용하지 않습니다. 구문은 아래와 같습니다.
arrayList.size();
여기서 arrayList
는 ArrayList의 이름입니다. 예를 통해 size
방법을 이해해 봅시다.
ArrayList<String> rainbow = new ArrayList<>(); rainbow.add("Violet"); rainbow.add("Red"); rainbow.add("Green"); System.out.println(rainbow.size()); Output: 3
이 메서드는 ArrayList 크기 값을 반환합니다. 위의 예에서 ArrayList rainbow
는 3개의 값으로 구성되어 있으므로 size
메서드는 3을 반환합니다.
결론
이 기사에서는 ArrayList가 무엇이며 Array와 어떻게 다른지 설명했습니다. 또한 ArrayList 클래스에 사용할 수 있는 다양한 메서드를 사용하여 ArrayList를 선언하고 사용하는 방법도 살펴보았습니다.
Java 학습에 대해 더 깊이 알고 싶다면 이 온라인 Java 과정을 확인하십시오.