본문 바로가기
BackEnd/Java

[Java] 동적가변배열 Dynamic Array

by summer_light 2021. 7. 1.

동적가변배열

동적가변배열이 아닌 일반 배열은 처음부터 배열의 길이를 초기화해서 만들어 사용한다.

반면에 동적가변배열은 배열의 길이를 동적으로, 필요시에 생성한다.

즉, 동적가변배열은 필요시에 필요한 만큼 만들어서 사용하는 배열이다.

 

다음과 같이 []안을 비워두고 선언하여 동적가변배열을 생성할 수 있다. 

int[][] arr = new int[3][]

 

 


예제 01. 길이가 1씩 증가하는 동적가변배열 

package may31;

import java.util.Arrays;

public class DynamicArray {
	public static void main(String[] args) {
		
		int[] arr = new int[3];
		
		int[][] arr01 = new int[3][3];
		
		char[][] arr02 = new char[3][]; //내부를 비워두었을 때 - null
		for (char[] cs : arr02) {
			System.out.println(Arrays.toString(cs)); // null
		}
		
		arr02 = new char[3][0]; //내부에 0을 넣었을 때 - []
		for (char[] cs : arr02) {
			System.out.println(Arrays.toString(cs)); // [0]
		}
		
		for (int i = 0; i < arr02.length; i++) {
			arr02[i] = new char[i + 1]; // 행 번호만큼 방 만들기 
			
			for (int j = 0; j < arr02[i].length; j++) { // 방에는 A, B, C... 넣기
				arr02[i][j] = (char)(65 + i + j);
			}
		}
		
		for (char[] cs : arr02) {
			System.out.println(Arrays.toString(cs));
		}
		
	}

}

출력결과

null
null
null
[]
[]
[]
[A]
[B, C]
[C, D, E]

 

 

예제02. 랜덤한 길이의 동적가변배열

  • 5개의 집, 각 집에는 몇 개의 방이 있는 지는 정하지 않고 생성
  • 각각의 집을 돌며 1~5개 사이의 방을 만들어 주고 출력
package may31;

import java.util.Arrays;

//동적가변배열
public class DynamicArray02 {
	public static void main(String[] args) {
		
		//5개의 집, 각 집에는 몇 개의 방이 있는 지는 정하지 않았다. (동적가변배열)
		int[][] arr01 = new int[5][]; 
		
		//각 집을 돌면서 랜덤한 갯수로 방 만들어 주기
		for (int i = 0; i < arr01.length; i++) {
			arr01[i] = new int[(int)(Math.random() * 5 + 1)]; // 1 ~ 5 사이의 방 갯수(랜덤)
		}
		
		//출력
		for (int[] is : arr01) {
			System.out.println(Arrays.toString(is));
		}
	
	}
}

댓글