2013-05-22 5 views
3

이 같은 가변 길이 열을 수행 할 수 있습니다 :다차원 배열 : 가변 길이 행?

private int k[][] = new int[3][]; 

for(int i = 0; i < k.length; i++) { 
    k[i] = new int[i+1]; 
} 
는 가변 길이 행을 할 수 있다면 당신은 열?

private int k[][] = new int[][5]; 

for(int i = 0; i < k.length; i++) { 
    // How would you do this? 
} 

의 길이를 알고 있다면 내가 궁금

고맙습니다.

+2

Java의 배열은 항상 고정 길이입니다. 크기가 가변적 인 것이 필요하면 ArrayList를 사용하십시오. 네가 정말로해야한다면 중첩 될 수있다. –

+0

컴파일러 : 빈 차원 뒤에 배열 차원을 지정할 수 없습니다. – johnchen902

답변

3

기본적으로 할 수 없습니다. "다차원"배열은 배열의 배열입니다. 따라서 으로 시작하여 "외부"배열의 크기를 알아야 생성 할 수 있습니다.

그래서 옵션은 다음과 같습니다 당신이가는대로 새 행을 추가 할 수 있도록

  • 가 대신 array[column][row] 대신 사용
  • array[row][column] 목록으로 거꾸로 방법으로 배열을 사용

    List<Object[]> rows = new ArrayList<Object[]>(); 
    for (SomeData data : someSource) { 
        Object[] row = new Object[5]; 
        ... 
        rows.add(row); 
    } 
    

    (또는 더 나은, "행"개념을 별도의 클래스로 캡슐화하므로 List<Row>이됩니다.)