Java에서 배열 크기 늘리기

Mohammad Irfan 2023년10월12일
  1. Java에서 다른 새 배열을 만들어 배열 크기 늘리기
  2. Java의 Arrays.copyOf() 메서드를 사용하여 배열 크기 늘리기
  3. Java에서 ArrayList 배열을 사용하여 배열 크기 늘리기
  4. Java에서 배열 크기 늘리기
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 배열을 사용하여 배열 크기 늘리기

ArrayListjava.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에서 새로운 것을 배웠습니다.

관련 문장 - Java Variable

관련 문장 - Java Array