2010-12-05 8 views
1

Java에서 다차원 배열을 확장하려면 어떻게해야합니까?
첫 번째 차원을 확장해야합니다. myArray[x][7]
7과 같은 형식으로 확장 된 모든 부분에 7이 남습니다.다차원 배열 확장 (2D)

답변

0

이 작업을 수행하려면 배열을 인스턴스 변수로 포함하는 클래스를 만들고이 인스턴스와의 모든 상호 작용을 처리하십시오.

3

Java의 배열의 길이는 고정되어 있으므로 실제로 확장 할 수 없습니다. 새롭고 더 큰 배열을 작성한 다음 이전 배열의 내용을 새 배열로 복사해야합니다. 이처럼 :

public class Test { 

    public static void main(String[] args) { 
     int[][] myArray = new int[3][7]; 

     // Print first dimension 
     System.out.println(myArray.length); // prints 3 

     myArray = addRow(myArray); 

     // Print first dimension 
     System.out.println(myArray.length); // prints 4 

    } 

    private static int[][] addRow(int[][] previous) { 

     int prevRowCount = previous.length; 

     int[][] withExtraRow = new int[prevRowCount + 1][]; 
     System.arraycopy(previous, 0, withExtraRow, 0, previous.length); 
     withExtraRow[prevRowCount] = new int[] { 1, 2, 3, 4, 5, 6, 7 }; 

     return withExtraRow; 
    } 

} 

당신은 물론 또한 예를 동적으로 자라는 ArrayList<SomeType[]>을 위해 사용할 수 있습니다. (동적으로 늘어나는 배열을 처리 할 때 실제로 선호되는 방법입니다.)

import java.util.*; 

public class Test { 

    public static void main(String[] args) { 
     List<int[]> myArray = new ArrayList<int[]>(); 

     // Print first dimension 
     System.out.println(myArray.size()); // prints 0 

     // Add three rows 
     myArray.add(new int[] { 1, 2, 3, 4, 5, 6, 7 }); 
     myArray.add(new int[] { 11, 12, 13, 14, 15, 16, 17 }); 
     myArray.add(new int[] { 21, 22, 23, 24, 25, 26, 27 }); 

     // Print first dimension 
     System.out.println(myArray.size()); // prints 3 

    } 
} 
0

수 없습니다.

올바른 크기로 새 배열을 만들 수 있지만 동적 배열을 허용하는 ArrayList 클래스에 대해 읽어 보는 것이 좋습니다.

1

또한 예를 들어, 방법을 Arrays.copyOf 사용할 수 있습니다

import java.util.Arrays; 

public class Array2D { 
    public static void main(String[] args) { 
     int x = 5 //For example 
     int[][] myArray = [x][7]; 

     myArray = Arrays.copyOf(myArray, myArray.length + 1); //Extending for one 
     myArray[myArray.length - 1] = new int[]{1, 2, 3, 4, 5, 6, 7}; 
    } 
}