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의 인덱스 위치 0Red 요소를 추가합니다. 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의 위치 0Red 항목을 추가합니다. 이 시점에서 전체 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 과정을 확인하십시오.