Java - 배열에 새로운 요소 추가, 3가지 방법

배열의 크기는 고정되어있기 때문에, 배열을 크기를 늘리면서 새로운 요소를 추가할 수는 없습니다. 더 큰 배열을 만들고, 이전 배열의 요소들을 새로운 배열로 복사한 뒤에 새로운 요소를 추가해야하는데요. 어떻게 구현하는지 알아보겠습니다.

1. Arrays.copyOf()를 이용하여 배열에 새로운 요소 추가

만약 기존 배열에 요소 2개를 추가하려면, 기존 배열보다 크기가 2 큰 새로운 배열을 만들어야합니다.

Arrays.copyOf(arr, size)는 size 크기의 배열을 만들고 arr을 복사합니다. 기존 배열보다 큰 크기의 배열을 만들면, 새로운 요소를 추가할 수 있습니다.

import java.util.Arrays;

public class Example2 {

    public static void main(String[] args) {

        String[] arr = {"a", "b", "c"};

        String[] newArr = Arrays.copyOf(arr, arr.length + 2);
        System.out.println("After copy: " + Arrays.toString(newArr));

        newArr[arr.length + 0] = "d";
        newArr[arr.length + 1] = "e";
        System.out.println("After add: " + Arrays.toString(newArr));
    }
}

Output:

After copy: [a, b, c, null, null]
After add: [a, b, c, d, e]

2. System.arraycopy()를 이용하여 배열에 새로운 요소 추가

Arrays.copyOf() 대신에 System.arraycopy()를 사용하여 동일하게 구현할 수 있습니다.

만약 새로운 요소 2개를 배열에 추가한다고 가정하면, 기존 배열보다 크기가 2 큰 배열을 만들어야 합니다.

System.arraycopy(srcArr, srcPos, destArr, destPos, length)는 srcArr의 destArr로 복사하는데 srcArr의 srcPos부터 복사를 시작합니다. 복사되는 위치는 destArr의 destPos Index부터입니다. 복사하는 길이는 length로 인자를 전달하면 됩니다.

System.arraycopy()의 자세한 API 사용 방법은 Java - 배열 복사 (deep copy)를 참고해주세요.

다음 예제는 System.arraycopy()를 사용하여 배열에 새로운 요소를 추가하는 예제입니다.

import java.util.Arrays;

public class Example {

    public static void main(String[] args) {

        String[] arr = {"a", "b", "c"};

        String[] newArr = new String[arr.length + 2];
        System.arraycopy(arr, 0, newArr, 0, arr.length);
        System.out.println("After copy: " + Arrays.toString(newArr));

        newArr[arr.length + 0] = "d";
        newArr[arr.length + 1] = "e";
        System.out.println("After add: " + Arrays.toString(newArr));
    }
}

Output:

After copy: [a, b, c, null, null]
After add: [a, b, c, d, e]

3. List를 이용하여 배열에 새로운 요소 추가

배열과 다르게 List는 가변적으로 크기를 변경할 수 있습니다.

이런 특징을 이용하면, 배열을 리스트로 변경하고 리스트에 새로운 요소들을 추가한 뒤에 다시 리스트를 배열로 변경할 수 있습니다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class Example1 {

    public static void main(String[] args) {

        String[] arr = {"a", "b", "c"};

        List<String> list = new ArrayList<>(Arrays.asList(arr));
        System.out.println("Array to List: " + list);

        list.add("d");
        list.add("e");
        System.out.println("After add: " + list);

        String[] newArr = list.toArray(new String[0]);
        System.out.println("List to Array: " + Arrays.toString(newArr));
    }
}

Output:

Array to List: [a, b, c]
After add: [a, b, c, d, e]
List to Array: [a, b, c, d, e]
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha