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)
로 상각됩니다.