Java에서 배열에 새 요소를 추가하는 방법

Hassan Saeed 2023년10월12일
  1. ArrayList 사용
  2. 새로운 더 큰 배열 만들기
Java에서 배열에 새 요소를 추가하는 방법

이 자습서에서는 Java에서 배열에 새 요소를 추가하는 방법에 대해 설명합니다.

Java의 Array는 동일한 데이터 유형의 고정 된 수의 요소를 보유하는 컨테이너 객체입니다. 배열의 길이는 배열 객체를 선언하는 동안 정의되며 나중에 변경할 수 없습니다.

Java에서 몇 가지 값으로 인스턴스화 된 길이 5의 배열이 있다고 가정합니다.

String[] arr = new String[5];
arr[0] = "1";
arr[1] = "2";
arr[2] = "3";
arr[3] = "4";
arr[4] = "5";

이제 배열에 6 번째 요소를 추가해야합니다. 이 6 번째 요소를 배열에 추가해 보겠습니다.

arr[5] = "6";

위의 코드 줄은 다음 오류를 제공합니다.

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5

이는 처음에 배열의 크기를 5로 선언했고 여기에 6 번째 요소를 추가하려고했기 때문입니다.

걱정하지 마세요.이 작업을 수행 할 수있는 두 가지 해결책이 있습니다. 배열 대신 ArrayList를 사용하거나 새 요소를 수용하기 위해 더 큰 새 배열을 만들 수 있습니다.

ArrayList 사용

더 좋고 권장되는 솔루션은 크기를 조정할 수 있으므로 배열 대신 ArrayList를 사용하는 것입니다. ArrayList의 크기는 고정되어 있지 않으므로 새 요소를 추가해야 할 때마다testList.add(element)를 실행하여 간단히 추가 할 수 있습니다.

import java.util.*;

public class Main {
  public static void main(String args[]) {
    List<String> testList = new ArrayList<String>();
    testList.add("1");
    testList.add("2");
    testList.add("3");
    testList.add("4");
    testList.add("5");

    // Print the original list
    System.out.println("Initial ArrayList:\n" + testList);
    // Add elements without running into any error
    testList.add("6");
    testList.add("7");

    // Print the list after adding elements
    System.out.println("Modified ArrayList:\n" + testList);
  }
}

위의 코드는 다음을 출력합니다.

Initial ArrayList : [ 1, 2, 3, 4, 5 ] Modified ArrayList : [ 1, 2, 3, 4, 5, 6, 7 ]

또는 이미 배열이있는 경우 ArrayList를 직접 만들 수도 있습니다.

import java.util.*;

public class Main {
  public static void main(String args[]) {
    // Create an array
    String[] arr = new String[1];
    arr[0] = "1";
    // Convert to ArrayList
    List<String> testList = new ArrayList<>(Arrays.asList(arr));

    // Print the original list
    System.out.println("Initial ArrayList:\n" + testList);
    // Add elements to it
    testList.add("2");
    testList.add("3");

    // Print the list after adding elements
    System.out.println("Modified ArrayList:\n" + testList);
  }
}

위의 코드는 다음을 출력합니다.

Initial ArrayList : [ 1 ] Modified ArrayList : [ 1, 2, 3 ]

ArrayList를 다시 배열로 쉽게 변환 할 수 있습니다.

import java.util.*;

public class Main {
  public static void main(String args[]) {
    // Create an array
    String[] arr = new String[1];
    arr[0] = "1";

    // Convert to ArrayList
    List<String> testList = new ArrayList<>(Arrays.asList(arr));

    // Add elements to it
    testList.add("2");
    testList.add("3");

    // Convert the arraylist back to an array
    arr = new String[testList.size()];
    testList.toArray(arr);
  }
}

새로운 더 큰 배열 만들기

배열로만 작업하는 것을 고집한다면 java.util.Arrays.copyOf 메서드를 사용하여 더 큰 배열을 만들고 새 요소를 수용합니다. 위에서 만든arr 배열을 사용하고 아래 예제에서 여기에 새 요소를 추가해 보겠습니다.

import java.util.*;

public class Main {
  public static void main(String args[]) {
    // Create an array
    String[] arr = new String[5];
    arr[0] = "1";
    arr[1] = "2";
    arr[2] = "3";
    arr[3] = "4";
    arr[4] = "5";

    // print the original array
    System.out.println("Initial Array:\n" + Arrays.toString(arr));

    // Steps to add a new element
    // Get the current length of the array
    int N = arr.length;
    // Create a new array of length N+1 and copy all the previous elements to this new array
    arr = Arrays.copyOf(arr, N + 1);
    // Add a new element to the array
    arr[N] = "6";
    // print the updated array
    System.out.println("Modified Array:\n" + Arrays.toString(arr));
  }
}

위의 코드는 다음을 출력합니다.

Initial Array : [ 1, 2, 3, 4, 5 ] Modified Array : [ 1, 2, 3, 4, 5, 6 ]

나중에arr에 다른 요소를 추가해야한다고 생각되면 위의 코드 블록을 다시 반복해야합니다!

따라서 모든 새 요소를 추가하면 이전 배열의 모든 요소를 ​​새 배열로 복사해야하므로 시간 복잡도가O(n)이므로이 솔루션은 권장되지 않습니다. 반면에ArrayList를 사용하여 모든 새로운 요소를 추가하면 작업 당 비용이O(1)로 상각됩니다.

관련 문장 - Java Array