어제 오늘 내일

[Java] 가변 길이 배열 (Jagged Array) 생성, 개수 구하기 본문

IT/Java

[Java] 가변 길이 배열 (Jagged Array) 생성, 개수 구하기

hi.anna 2021. 4. 18. 09:20

 

가변 길이 배열(Jagged Array)은,

보통 배열 안의 배열(Array in Array)라고 합니다.

2차원 배열 이상의 다차원 배열을 생성할 때,

배열의 마지막 차수의 크기를 지정하지 않고, 가변적으로 생성할 수 있습니다.

 

arr[3][]

위 그림은,

2차원 가변 길이 배열의 한 예시입니다.

위 예제는 arr[3][] 이라고 정의하고,

마지막 차수의 길이를 지정하지 않습니다.

위 그림을 보면,

arr변수는 3개의 원소를 가지는 1차원 배열을 가리키고 있습니다.

그리고, 이 3개의 원소를 가지는 1차원 배열은 각각 다른 길이의 배열을 다시 가리키고 있습니다.

배열 안의 배열인 것입니다.

또한, 이 1차원 배열이 가리키고 있는 각각의 배열의 길이는 '가변적'입니다.

 

 

가변길이배열(Jagged Array) 생성하기

String arr[][] = new String[3][];

arr[0] = new String[3];
arr[1] = new String[2];
arr[2] = new String[4];

위와 같이 배열 객체를 생성할 때,

마지막 차원의 배열 크기를 지정하지 않고 배열 객체를 생성한 후,

나중에 각 배열이(arr[0], arr[1], arr[2])

각각의 새로운 배열들을 가리키도록 할 수 있습니다.

 

String arr[][] = {
      {"A", "B", "C"},
      {"D", "E"},
      {"F", "G", "H", "I"}
};

위와 같이, 

배열의 생성 및 데이터 초기화까지 한번에 할 수도 있습니다.

 

 

가변길이배열 길이 구하기

arr 길이, 각 arr[i]별 원소 갯수 구하기

 코드 

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

        // 배열
        String[][] arr = { 
                { "A", "B", "C" }, 
                { "D", "E" }, 
                { "F", "G", "H", "I" } 
        };

        // arr 길이
        System.out.println("arr length : " + arr.length);

        // 각 arr[i] 길이
        System.out.println("arr[0] : " + arr[0].length);
        System.out.println("arr[1] : " + arr[1].length);
        System.out.println("arr[2] : " + arr[2].length);

    }
}

 결과 

arr length : 3
arr[0] : 3
arr[1] : 2
arr[2] : 4

위 예제에서 arr는

위 그림과 같이

3개의 배열 원소와 

각각의 배열 원소가 3개, 2개, 4개의 원소를 가지는 2차원 배열입니다.

 

arr.length;

arr의 갯수를 구합니다.

 

arr[0].length;

arr[1].length;

arr[2].length;

각 arr[i]가 가지고 있는 원소 갯수를 구합니다.

 

 

반복문을 사용하여 원소 갯수 구하기

 코드 

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

        // 배열
        String[][] arr = { 
                { "A", "B", "C" }, 
                { "D", "E" }, 
                { "F", "G", "H", "I" } 
        };

        // arr 길이
        System.out.println("arr length : " + arr.length);

        // 각 arr[i]의 길이
        for (int i = 0; i < arr.length; i++) {
            System.out.println("arr[" + i + "] : " + arr[i].length);
        }
    }
}

 결과 

arr length : 3
arr[0] : 3
arr[1] : 2
arr[2] : 4

 

위와 같이 반복문으로 표현 할 수도 있습니다.

 

 

배열 전체의 원소 갯수(총합) 구하기

 코드 

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

        // 배열
        String[][] arr = { 
                { "A", "B", "C" }, 
                { "D", "E" }, 
                { "F", "G", "H", "I" } 
        };

        int count = 0;

        // arr 길이
        System.out.println("arr length : " + arr.length);

        // 각 arr[i]
        for (int i = 0; i < arr.length; i++) {
            System.out.println("arr[" + i + "] : " + arr[i].length);
            count += arr[i].length;
        }

        // 전체 원소의 갯수
        System.out.println("전체 원소의 개수 : " + count);
    }
}

 결과 

arr length : 3
arr[0] : 3
arr[1] : 2
arr[2] : 4
전체 원소의 개수 : 9

전체 원소의 갯수를 구하고 싶다면

위 코드와 같이

각 arr를 순회하면서(for문 사용)

원소의 갯수를 count 변수에 누적해 주면 됩니다.

 

 


 

가변길이배열(Jagged Array)의 생성 방법과

원소의 개수를 세는 방법을 알아보았습니다.

 

 

반응형
Comments