JAVA BASE/Array(배열)

03. [자바] 2차원 배열(다차원 배열)

staticClass 2020. 12. 8. 15:05

2차원 배열(다차원 배열)?

2차원 이상의 배열, 즉 다차원 배열을 사용할수 있다
쉽게 생각하면 배열 안에 배열을 만들어 사용이 가능하다
주택이 배열(Array)이라 치면 집안에 여러개의 방(index)이 있다면
아파트 건물(배열) 안에 여러개의 집(index) 안의 여러개의 방(index)
이라고 생각하면 이해하기 쉬울 것이다.

건물[호수][방]    //2차원 배열

 

2차원 배열의 선언과 인덱스

2차원 배열은 1차원 배열과 선언하는 방법이 비슷하고 괄호[]가 하나 더 들어간다.

1. 타입[][] 변수이름; > int[][] score;
2. 타입 변수이름[][]; > int score[][];
3. 타입[] 변수이름[]; > int[] score[];

2차원 배열은 주로 테이블형태의 데이터를 담는데 사용되며 만일 4행 3열의 데이터를
담기 위한 배열을 생성하려면 다음과 같다.

int[][] score = new int[4][3];    // 4행 3열의 2차원 배열을 생성한다.

 

2차원 배열의 초기화

2차원 배열도 괄호{}를 사용하여 생성과 초기화를 동시에 하는게 가능하다.

int[][] arr = new int[][] {{1, 2, 3}, {4, 5, 6}};
int[][] arr = {{1, 2, 3}, {4, 5, 6}};    // new int[][] 생략가능


//만약 배열의 크기가 커진다면 행별로 줄 바꿈 해주는게 가독성이 좋다.
int[][] arr = new int[][] {
                            {1, 2, 3}
                          , {4, 5, 6}
                          , {7, 8, 9}
                          , {0, 1, 2}
                          };

 

만일 아래와 같은 테이블형태의 데이터를 배열에 저장하려면?

  국어 영어 수학
1 100 100 100
2 20 20 20
3 30 30 30
4 40 40 40
5 50 50 50
int[][] score = new int[][] {
                              {100, 100, 100}
                            , {20,  20,  20}
                            , {30,  30,  30}
                            , {40,  40,  40}
                            };

 

 


 

다차원 배열.. 사실 평소 맵안에 리스트를 넣고 사용해왔기 때문에
이해하기 어려운 개념은 아니었지만 컬렉션이 더 편하기 때문에 배열을
사용하지 않게 되는것 같다.
컬렉션과 배열이 있을때 배열을 사용해야 하는 경우는 없을까? 하고 
생각해 보았다. 없다.🖐
구글링을 해보아도 배열을 쓸 이유가 없다.🖐
혹시 배열을 써야하는 상황이나 그 이유를 아시는분은 댓글좀..👩‍💻