어제 오늘 내일

[Java] 배열 길이 늘리기 본문

IT/Java

[Java] 배열 길이 늘리기

hi.anna 2021. 5. 5. 18:58

 

Java에서 한번 선언된 배열의 길이를 늘리는 것은 불가능합니다.

따라서, 만약 배열의 길이를 늘려서, 원소를 추가해야 한다면

기존의 배열 대신, 새로운 배열을 새로 생성하고(원하는 길이만큼)

기존 배열의 값들을 새로운 배열로 복사해 주어야 합니다.

 

  1. 반복문
  2. Arrays.copyOf()
  3. ArrayList

 

 

1. 반복문

  코드  

import java.util.Arrays;

public class ArrayLength {
    public static void main(String[] args) {
        
        String[] arr = { "A", "B", "C" };
        int arrLength = arr.length;

        // 기존 배열을 새로운 배열로 복사(길이를 늘려줌)
        String[] newArr = new String[arrLength + 1];
        for (int i = 0; i < arrLength; i++) {
            newArr[i] = arr[i];
        }

        // 새로 늘어난 index에 값 추가
        newArr[arrLength] = "D";

        // 결과 출력
        System.out.println("기존 배열 : " + Arrays.toString(arr));
        System.out.println("새로운 배열 : " + Arrays.toString(newArr));

    }
}

  결과  

기존 배열 : [A, B, C]
새로운 배열 : [A, B, C, D]

반복문을 사용하여,

기존 배열(arr)을 새로운 배열(newArr)로 복사하고,

(newArr의 길이는, 늘리고 싶은 길이로 설정해 줍니다)

newArr의 새로 늘어난 index에 새로운 값을 추가해 주었습니다.

 

 

 

2. Arrays.copyOf()

public static <T> T[] copyOf​(T[] original, int newLength)

Arrays.copyOf() 메소드는 

파라미터로 받은 original 배열을 복사해서, 새로운 배열을 만들어서 리턴합니다.

이 때, 리턴 되는 새로운 배열의 길이는, 2번째 파라미터(newLength)로 지정해 줄 수 있습니다.

 

  코드  

import java.util.Arrays;

public class ArrayLength {
    public static void main(String[] args) {
        
        String[] arr = { "A", "B", "C" };
        int arrLength = arr.length;

        // 기존 배열을 새로운 배열로 복사(길이를 늘려줌)
        String[] newArr = Arrays.copyOf(arr, arrLength + 1);

        // 새로 늘어난 index에 값 추가
        newArr[arrLength] = "D";

        // 결과 출력
        System.out.println("기존 배열 : " + Arrays.toString(arr));
        System.out.println("새로운 배열 : " + Arrays.toString(newArr));

    }
}

  결과  

기존 배열 : [A, B, C]
새로운 배열 : [A, B, C, D]

Arrays.copyOf() 메소드를 이용하여

새로운 배열의 길이를 지정하고, 기존 배열을 복사하였습니다.

 

 

 

3. ArrayList

List는 가변적으로 길이를 늘릴수 있습니다.

이런 점을 이용하여, 배열의 길이를 늘릴수 있습니다.

List가 중간에 매개체가 되어, 배열의 길이를 늘리는 방법입니다.

 

  코드  

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

public class ArrayLength {
    public static void main(String[] args) {

        String[] arr = { "A", "B", "C" };

        // 기존 배열을 List로 변환
        List<String> list = new ArrayList<>(Arrays.asList(arr));

        // List에 값 추가
        list.add("D");

        // List를 배열로 변환
        String[] newArr = list.toArray(new String[0]);

        // 결과 출력
        System.out.println("기존 배열 : " + Arrays.toString(arr));
        System.out.println("새로운 배열 : " + Arrays.toString(newArr));

    }
}

  결과  

기존 배열 : [A, B, C]
새로운 배열 : [A, B, C, D]

1. 배열을 List로 변환합니다.

2. List에 값을 추가하여, 길이를 늘려줍니다.

3. List를 다시 배열로 변환합니다.

[Java] 배열을 List로, List를 배열로 변환하기

 

[Java] 배열을 List로, List를 배열로 변환하기

배열을 List로 Arrays.asList() new ArrayList<>(Arrays.asList()) Collectors.toList() ArrayList를 배열로 toArray() - java.util.List 배열을 List로 1. Arrays.asList() 코드  import java.util.Arrays; impo..

hianna.tistory.com

 


 

배열의 길이를 늘리는 방법을 알아보았습니다.

 

 

 

반응형
Comments