Java에서 배열 크기 늘리기
- Java에서 다른 새 배열을 만들어 배열 크기 늘리기
-
Java의
Arrays.copyOf()
메서드를 사용하여 배열 크기 늘리기 -
Java에서
ArrayList
배열을 사용하여 배열 크기 늘리기 - Java에서 배열 크기 늘리기
이 자습서에서는 Java에서 배열 크기를 늘리는 방법을 소개합니다. 주제를 이해하는 데 도움이 되는 몇 가지 예제 코드도 있습니다.
Java에서 배열은 동일한 유형의 유한한 데이터 모음입니다. 배열의 크기는 고정되어 있으며 생성 후에는 길이를 수정할 수 없습니다. 어레이가 메모리에 인접한 데이터 블록
으로 저장되기 때문입니다.
사용자는 필요한 메모리 양이 연속적으로 사용 가능하도록 크기를 미리 정의해야 합니다. 이 가이드에서는 어레이의 고정 길이 문제를 해결하는 다양한 방법을 알게 될 것입니다.
추가 공간 없이 배열에 요소를 추가하려고 할 때 어떤 일이 발생하는지 먼저 살펴보겠습니다. 우리는 일반적으로 인덱스에 액세스하여 배열에 항목을 추가합니다. 다음 인덱스를 사용하여 이미 가득 찬 배열에 항목을 추가하려고 하면 Java는 ArrayIndexOutOfBoundsException
을 반환합니다.
다음 코드는 이러한 시나리오의 예입니다.
public class Main {
public static void main(String[] args) {
int[] arr = new int[3];
arr[0] = 5;
arr[1] = 10;
arr[2] = 15;
arr[3] = 20; // Index 3 is out of bounds
}
}
출력:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
at abc.Demo.main(Demo.java:13)
이제 이 문제를 극복하는 방법을 이해하려고 노력합시다.
Java에서 다른 새 배열을 만들어 배열 크기 늘리기
배열의 고정 크기에 대한 간단한 솔루션은 더 큰 크기의 다른 배열을 만드는 것입니다.
카운터 변수를 사용하여 배열에 삽입된 요소의 수를 추적할 수 있습니다. 이 숫자가 배열의 길이와 같을 때마다(배열이 가득 찼음을 나타냄) 원래 배열보다 한 크기 큰 새 배열을 만들 수 있습니다.
다음으로 원본 배열의 모든 요소를 새 배열로 전송하고 새 요소를 위한 추가 공간이 하나 더 있습니다. 새 요소를 받았지만 이를 위한 공간이 충분하지 않은 경우 이 프로세스를 반복할 수 있습니다.
길이가 5
인 배열을 만들고 7
요소를 삽입하려고 시도하는 다음 코드를 고려하십시오. 어레이가 가득 찰 때마다 increaseSize()
메서드를 사용하여 크기를 늘립니다.
public class Main {
public static int[] increaseSize(int[] arr) {
int[] newArr = new int[arr.length + 1]; // Creating a new array with space for an extra element
for (int i = 0; i < arr.length; i++) {
newArr[i] = arr[i]; // Copying the elements to the new array
}
return newArr;
}
public static void main(String[] args) {
int[] arr = new int[5];
int counter = 0;
for (int i = 0; i <= 6; i++) {
if (counter == arr.length) {
arr = increaseSize(arr);
}
arr[i] = i * 2;
counter += 1;
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
출력:
0 2 4 6 8 10 12
Java의 Arrays.copyOf()
메서드를 사용하여 배열 크기 늘리기
Java에는 더 큰 크기의 새 배열을 만들고 이전 배열 요소를 새 배열로 복사할 수 있는 내장 copyOf()
메서드가 있습니다.
copyOf()
함수는 Arrays
클래스에 속합니다. 이 메서드의 구문은 다음과 같습니다. 원래 배열의 모든 요소를 포함하는 언급된 길이의 배열을 반환합니다.
copyOf(originalArray, newLength)
다음 코드는 위에서 언급한 것과 유사합니다. 유일한 차이점은 increaseSize()
메서드 대신 copyOf
메서드를 사용한다는 것입니다.
import java.util.Arrays;
public class Main {
public static void main(String[] args) {
int[] arr = new int[5];
int counter = 0;
for (int i = 0; i <= 6; i++) {
if (counter == arr.length) {
int[] newArr = Arrays.copyOf(arr, arr.length + 1);
arr = newArr;
}
arr[i] = i * 2;
counter += 1;
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
}
출력:
0 2 4 6 8 10 12
Java에서 ArrayList
배열을 사용하여 배열 크기 늘리기
ArrayList
는 java.util
패키지에 있는 동적 배열이며 List
인터페이스를 구현합니다. 일반 배열과 달리 ArrayList
는 가변 길이를 갖습니다.
Java는 이 동적 배열의 크기를 자동으로 처리하므로 배열의 공간 부족에 대해 걱정할 필요가 없습니다. 기본 크기는 10
요소이지만 더 많은 요소가 추가되면 크기가 커집니다.
아래 표는 어레이와 ArrayList
의 주요 차이점을 설명합니다.
정렬 | 배열 목록 |
---|---|
배열은 크기를 조정할 수 없으며 생성 후 항상 고정된 길이를 갖습니다. | ArrayList 는 가변 크기 배열이며 추가 공간이 필요한 경우 크기가 동적으로 증가합니다. |
배열은 기본 데이터 유형과 객체를 모두 포함할 수 있습니다. | ArrayList 는 객체만 저장할 수 있고 기본 데이터 유형은 저장할 수 없습니다. 기본 데이터 유형은 목록에 추가하기 전에 해당 개체로 변환됩니다. (int는 정수로, double은 Double로) |
일정한 시간에 인덱스를 사용하여 요소를 추가, 제거 또는 가져올 수 있으므로 어레이의 성능은 ArrayList 보다 좋습니다. |
ArrayLists 는 추가 공간이 필요한 경우 크기를 조정해야 하므로 배열보다 약간 느립니다. |
요소는 해당 인덱스를 사용하여 액세스할 수 있습니다. | ArrayList 의 요소에 액세스하고 수정하기 위한 get() , set() 또는 add() 와 같은 전용 메서드가 있습니다. 요소에 액세스하기 위해 대괄호 안의 인덱스를 직접 사용할 수 없습니다. |
다음 코드는 ArrayLists
를 사용하고 요소 추가, 요소 수정, 목록 값 인쇄와 같은 기본 작업을 수행하는 방법을 설명합니다.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) { // Creating a new ArrayList to hold Integer values
ArrayList<Integer> arrList = new ArrayList<Integer>();
// Adding elements 5, 10, 15 and 20 to the ArrayList
arrList.add(5);
arrList.add(10);
arrList.add(15);
arrList.add(20);
// Printing the ArrayList
System.out.println(arrList);
// Adding an element 7 at index 2. This will shift the rest of the elements one place to the
// right
arrList.add(2, 7);
System.out.println(arrList);
// Fetching the element at index 3
System.out.println(arrList.get(3));
// Changing the element present at index 1 to 17
arrList.set(1, 17);
System.out.println(arrList);
}
}
출력:
[5, 10, 15, 20]
[5, 10, 7, 15, 20]
15
[5, 17, 7, 15, 20]
길이가 5
인 배열에 7
요소를 추가하려는 시나리오는 ArrayLists
를 사용하여 쉽게 해결할 수 있습니다. ArrayLists
에서는 int
와 같은 기본 데이터 유형을 사용할 수 없으므로 래퍼 클래스 Integer
를 사용합니다.
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
ArrayList<Integer> arrList = new ArrayList<Integer>();
for (int i = 0; i <= 6; i++) {
arrList.add(i * 2);
}
for (int i = 0; i < arrList.size(); i++) {
System.out.print(arrList.get(i) + " ");
}
}
}
출력:
0 2 4 6 8 10 12
Java에서 배열 크기 늘리기
배열은 기본적이지만 매우 중요하고 유용한 데이터 구조입니다. 배열의 한계는 크기가 고정되어 있고 크기가 동적으로 증가할 수 없다는 것입니다.
이 튜토리얼에서는 배열의 크기를 늘리는 방법을 배웠습니다. 더 큰 크기의 새 배열을 만들고 이전 배열의 내용을 새 배열로 복사할 수 있습니다. 가장 간단하고 가장 좋은 솔루션은 ArrayLists
를 사용하여 크기를 동적으로 늘릴 수 있기 때문입니다.
이 가이드가 매우 도움이 되었기를 바라며 Java에서 새로운 것을 배웠습니다.