2017-02-13 1 views
-2

배열이 작동하는 방식, 특히 배열에 특정 크기가 지정되지 않은 경우를 이해하는 데 어려움이 있습니다.JAVA : 매개 변수의 행/열 수가 동일한 새 배열 만들기?

public int [][] someMethodHere(int [][] myNewArray) { 
//code here 
} 

가 난 그냥 몇 가지 수치에 추가하지 않고 (매개 변수의 행과 열 수가 동일한 방법 내의 다른 배열을 만들 수있는 방법을 알고 싶어요 예를 들어, 내가 코드를 제공하고 있습니다 경우 매개 변수를 누른 다음 새 배열에 동일한 값을 쓰는 것입니다. 감사합니다.)

+3

당신은 단순히 배열의 길이 속성과 사용을 얻을 새로운 배열을 만들 때. –

+1

이것은 1 차원 배열입니다. "행과 열"은 무엇을 의미합니까? – ajb

+0

죄송합니다. 다른 브라켓을 추가하는 것을 잊었습니다. – EyeOfTheOwl

답변

-1

배열 복사본을 만들고 새 배열을 지울 수 있습니다.

public static int[][] someMethodHere(int[][] src) { 
    int length = src.length; 
    int[][] target = new int[length][src[0].length]; 
    for (int i = 0; i < length; i++) { 
     System.arraycopy(src[i], 0, target[i], 0, src[i].length); 
     Arrays.fill(target[i], 0); 
    } 
    return target; 
} 
+0

이렇게하면 일련의 null 행과 열이 생성됩니다. – shmosel

+0

이제는 의미가 덜합니다. 깨끗한 배열을 만든 다음 소스 배열에서 데이터를 복사하고 즉시 지 웁니다. – shmosel

0

배열에는 배열을 만들 때 설정 한 고정 크기가 있습니다.

List 또는 Map과 같은 다른 많은 데이터 구조와는 달리 "스마트"하며 필요에 따라 크기 조정을 처리 할 수 ​​있습니다. 당신이 컴파일러를 알려 주어야 배열을 만들 때

은 그래서 얼마나 큰 : 동일한 크기의 새로운 배열을 만들려면

// create the original array with 10 slots 
int[] originalArray = new int[10]; 

, 당신은 Array 유형의 length 속성을 사용할 수 있습니다 . 2 차원 배열의 귀하의 경우에는

// create a new array of the same size as the original array 
int[] newArray = new int[originalArray.length]; 

, 당신은 이런 식으로 그것을 할 수 : 두 번째 차원의 길이를 지정할 때, 나는 첫 번째 요소의 길이를 얻을

// create the original array 
int[][] originalArray = new int[10][20]; 

// create a new array of the same size as the original array 
int[][] newArray = new int[originalArray.length][originalArray[0].length]; 

공지 사항

원래 배열에. 모든 행의 길이가 같은 한이 작동합니다.

행이 서로 다른 길이의 경우이 같은 배열의 첫 번째 차원 반복하여 새 배열의 각 행의 길이를 설정할 수 있습니다 :

// create a new array where the first dimension is the same size as the original array 
int[][] newArray = new int[originalArray.length][]; 

// set the size of the 2nd dimension on a per row basis 
for(int i = 0; i < originalArray.length; i++) { 
    newArray[i] = new int[originalArray[i].length]; 
} 
관련 문제