"안녕하세요, 가장 똑똑한 학생입니다!"

"안녕, 리시!"

"배열에 대한 새로운 논의가 필요하신가요? 오늘은 여러분을 위한 것이 있습니다! 오늘은 들쭉날쭉한 배열과 다차원 배열에 대해 말씀드리겠습니다."

"피에 굶주리고 무섭게 들리네요."

"걱정하지 마십시오. 실제 프로그래머는 항상 배열을 처리할 수 있습니다. 심지어 열악한 경우에도 마찬가지입니다. 농담은 차치하고 배열의 들쭉날쭉함은 2차원 배열의 행을 교환할 수 있을 뿐만 아니라 배열을 구성할 수 있는 능력을 반영합니다. 그러나 그것은 필요합니다.

"2차원 배열의 첫 번째 행의 길이가 10이고 두 번째 행의 길이가 50이 되기를 원한다고 가정해 보겠습니다."

"정말 그렇게 할 수 있습니까?"

"물론입니다! 먼저 '컨테이너 컨테이너'를 만듭니다. 이것은 행 배열에 대한 참조를 저장할 첫 번째 배열입니다. 수행 방법은 다음과 같습니다.

int[][] name = new int[height][];

" 두 번째 차원을 생략하기 만 하면 Java 머신이 컨테이너 컨테이너를 생성합니다. 이 코드를 실행한 후 메모리에 다음과 같은 내용이 저장됩니다.

"그리고, 글쎄, 당신은 이미 1차원 배열을 만드는 방법을 알고 있습니다 🙂

결과 코드는 다음과 같습니다.

// Matrix of important data
int[][] matrix = new int[2][];
matrix[0] = new int[10];
matrix[1] = new int[50]
2차원 배열 0번째 행은 요소

의 배열입니다. 첫 번째 행은 요소 의 배열입니다.10
50

"우리는 소위 "들쭉날쭉한" 배열을 만들었습니다. 가장자리가 거칠고 불규칙합니다.

"이제 이 배열의 모든 요소를 ​​화면에 표시하려면 배열의 length배열이 유용할 것입니다. 결국 배열의 행 길이가 다르기 때문입니다.

"그런데, 우리 예제에서 '컨테이너의 컨테이너' 길이를 찾는 방법을 알려주실 수 있나요? 또한 길이가 있다는 것을 의미하는 배열 객체이기도 합니다."

"아마 matrix.length?"

"맞아요! 그리고 행을 형성하는 배열의 경우 matrix[0].length0번째 행에 사용할 것입니다."

"그리고 첫 번째로, 그것은 우리가 matrix[1].length?를 사용한다는 것을 의미합니다."

"그렇군요. 첫 번째 경우에는 명령을 실행하면 10이 나오고 두 번째 경우에는 결과가 50이 됩니다.

2차원 배열 작업

"이제 2차원 배열을 표시해 보겠습니다.

int[][] matrix = new int[3][];
matrix[0] = {1, 2, 3, 4, 5, 6};
matrix[1] = {1, 2, 3};
matrix[2] = {1};
for (int i = 0; i < matrix.length; i++)
{
   for (int j = 0; j < matrix[i].length; j++)
      System.out.print( matrix[i][j] + " " );
   System.out.println();
}
배열 만들기
값으로 배열 채우기


배열의 행을 반복하는 외부 루프.
단일 행의 셀을 반복하는 내부 루프.

"보시다시피 두 개의 중첩된 루프가 필요합니다. 첫 번째는 outer 이고 두 번째는 inner 입니다 .

"외부 루프( i변수)에서 우리는 2차원 배열을 구성하는 모든 행(배열)을 순차적으로 통과합니다. 각 값은 i해당 인덱스가 있는 행에 해당합니다.

"내부 루프( j변수)에서 행의 모든 ​​셀을 반복합니다. 내부 루프 덕분에 하나의 1차원 배열 값으로 구성된 행이 화면에 표시됩니다.

"다음과 같이 표시됩니다.

배열의 한 줄을 처리합니다. 1 2 3 4 5 6
배열의 두 줄을 처리합니다. 1 2 3 4 5 6
1 2 3
배열의 세 줄을 처리합니다. 1 2 3 4 5 6
1 2 3
1

다차원 배열

"아미고! 2차원 배열이 있다면 3차원 배열도 있을 수 있다고 생각하셨나요?

"그냥 생각하고 있었는데 물어보기가 부끄러웠어요.

"예, 3차원 배열을 만들 수 있으며 일반적으로 모든 차원의 배열을 만들 수 있습니다. 이러한 배열을 '다차원'이라고 합니다. 재미로 4차원의 다차원 배열을 만들어 보겠습니다.

 int[][][][] matrix = new int[2][3][4][5];

"별로 어렵지 않은 것 같군요!"

"아직 수동으로 생성하려고 시도하지 않았습니다! 여기에서 눈을 즐겁게 하십시오.

int[][][][] matrix;
matrix = new int[2][][][];                   // Create a 2-element array of references to references to references
for (int i = 0; i < matrix.length; i++)
{
  matrix[i] = new int[3][][];                // Create a 3-element array of references to references
  for (j = 0; j < matrix[i].length; j++)
  {
    matrix[i][j] = new int[4][];             // Create a 4-element array of references
    for (k = 0; k < matrix[i][j].length; k++)
      matrix[i][j][k] = new int[5];          // Create 5-element arrays of integers
  }
}

"그리고 그것은 단지 배열을 생성하는 것일 뿐입니다! 그런 다음 어떻게든 그것으로 작업해야 합니다."

"내가 말한 것을 철회합니다. 그들과 함께 일하는 것이 그렇게 쉽지는 않습니다. 하지만 가능합니다."

"가능하기 때문에 여기에 보너스 작업이 있습니다. 모든 값을 3차원 배열로 표시하는 코드를 작성하세요. 당신은 이것을 할 만큼 충분히 알고 있습니다. 가장 중요한 것은 인내심을 갖고 주의를 기울이는 것입니다. 이 작업을 한 줄로 해결하는 데 도움이 되는 지식). 하지만 어떻게 해결하든 상관없이 해결하세요."

"고마워, 리시. 노력해볼게."