2016-09-10 3 views
1

최근에 배열 배열 목록을 2 차원 배열로 변환/변환하는 데 문제가있었습니다. 나는 나에게이 사이트에 대답했다 배열 배열 목록을 Java에서 2d 배열로

List<Object[]> arrayList; 
// initialize and fill the list of arrays 
// all arrays have the same length 
Object[][] array2d = arrayList.toArray(new Object[][] {}); 

를 사용하는 것으로,하지만 난 조금을 봤 어딘가에 나쁜 관행을 conseidered 것을 읽었다. 나는 실제로 사용 된 단 한 줄의 변형 이었기 때문에 여전히 그것을 사용했다.

실제로 의미하는 바는 무엇이며 왜 나쁜 것으로 간주됩니까? [][]{} 비트를 이해할 수 없습니다. 비어 있지만 초기화 된 Object[][].toArray() 메소드에 전달한 것 같습니다.

+0

그냥 완전성에 대한 나쁜 연습했다 질문을 연결하는 좋은 것입니다. – nhouser9

답변

0

예를 들어 나쁜 습관이라고 생각되는 이유를 찾을 수 없습니다.

1

내가 보는 유일한 것은 배열을 생성하지만 그것을 사용하지 않는다는 것입니다.

하나는 자바 독 보시 :

는 (마지막 요소로부터 제)를 적절한 순서리스트 내의 모든 요소를 ​​포함하는 배열을 반환 반환되는 배열의 실행시의 형태는, 지정된 배열의 형태와 같습니다. 리스트가 지정된 배열에 들어가면 그 배열에 반환됩니다. 그 이외의 경우, 새로운 배열은, 지정된 배열의 실행시의 형태와이리스트의 사이즈로 할당 할 수 있습니다.

그리고이 방법의 소스 코드를 확인할 수 있습니다 :

@SuppressWarnings("unchecked") 
public <T> T[] toArray(T[] a) { 
    if (a.length < size) 
     // Make a new array of a's runtime type, but my contents: 
     return (T[]) Arrays.copyOf(elementData, size, a.getClass()); 
    System.arraycopy(elementData, 0, a, 0, size); 
    if (a.length > size) 
     a[size] = null; 
    return a; 
} 

그래서 당신이 만드는 것은 하늘의 배열이며, 그 방법은 다른 하나를 생성합니다.

Object[][] array2d = arrayList.toArray(new Object[arrayList.size()][]); 

귀하의 추측은 맞습니다.

몇 가지 팁 here