2014-04-18 3 views
0

나는이 문제를 며칠 동안 찾고 있는데 적절한 답을 찾지 못하는 것 같습니다. 그래서 배열 형태의 ArrayList (ArrayList)를 SQL 문자열의 결과 집합으로 채 웁니다. 내 목표는 한 행의 결과를 1 차원 객체 배열로 변환하는 것입니다.ArrayList <Object[]>을 Object []로 변환

나는이 웹 사이트에서 내 연구 결과를 여러 번 시도했지만, 내가 만든 유일한 지식은 1 차원 ArrayList를 간단한 배열로 변환하는 방법이었습니다. 여러분이 어떤면에서 나를 도울 수 있기를 바랍니다. 감사!

내 표는이처럼 보이는 경우 : SQL-명령을

sizeid | diameter 
    1 | 32 
    2 | 40 

을 "크기와 직경을 선택"나는 간단한 × 1 테이블에 저장된 두 개의 숫자 32와 40를 얻을 것이다.

| 32 | 
| 40 | 

이제는이를 1 차원 배열로 가져 가고 싶습니다.

방법은 변환 :

private Object[] getSizes() { 
    query = new SQLquery(); 
    query.setSQLstring("SELECT diameter FROM size"); 
    query.runQuery(); 

    List<Object> sizeList = query.getRowData(); 
    Object[] sizes = new Object[sizeList.size()]; 

    // here I want to convert the List to an array.. 

    return sizes; 
} 

방법을 클래스에는 SQLQuery의 ArrayList를 생성 :

public void outputResult() { 
    try { 
     if (result != null) { 
      ResultSetMetaData meta = result.getMetaData(); 
      columns = meta.getColumnCount(); 
      columnNames = new Object[columns]; 
      for (int i=1; i<=columnNames.length; i++) { 
      columnNames[i-1] = meta.getColumnName(i); 
      } 
      List<Object> rowData = new ArrayList<Object>(); 
      while (result.next()) { 
      Object[] row = new Object[columns]; 
      for (int j=0; j<= columns; j++) { 
       row[j-1] = result.getString(j); 
      } 
      rowData.add(row); 
     } 
     } 
    } catch (SQLexception e) { 
     System.out.println(e); 
    } 
} 

및 클래스에는 SQLQuery의 간단한 GET-방법 :

public List<Object> getRowData() { 
    return rowData; 
} 
+0

Object [] obj = myArrayList.get (0) – Mik378

+0

아니요, 저는 그가 모든 단일 값 결과를 가진 배열을 원한다고 생각합니다. 질문. – Aioros

+0

이클립스 응답이 오류 메시지 : "형식이 일치하지 않습니다 : 개체에서 개체 []" – user3548416

답변

1

getRowData() 메서드는 List<Object>을 반환하는 반면 그것은 실제로 배열을 포함합니다. 배열의 목록을 항상 반환한다고 말한 것이 이상하게 보일지라도, 내가 가진 것으로 가정합니다.

이러한 "개체"를 거치며 루프를 뒤집어 Object[]으로 내린 다음 첫 번째 멤버를 데려 와야합니다.

Object[] sizes = new Object[sizeList.size()]; 
int i = 0; 
for (Object o : sizeList) sizes[i++] = ((Object[]) o)[0]; 
return sizes; 
+0

Marko에 감사드립니다! 지금은 잘 작동 중입니다! – user3548416

+0

개체 목록의 항목이 배열이라는 것이 이상한 이유는 무엇입니까? 실제로 객체 목록의 모든 항목은 SQL 쿼리의 결과 행을 나타냅니다. 행은 여러 값 (열)을 포함 할 수 있습니다. 이는 쿼리가 하나의 열만 선택하는 특수한 경우에 해당하므로 오직 하나의 항목. – WoDoSc

+0

@Nicola 목록의 항목이 배열 인 것은 이상한 일이 아닙니다. 이상한 점은리스트의 타입이'List '이라는 것입니다. –

0

당신은 마르코 Topolnik 제안 어떤 방법을 사용할 수 있습니다.

그러나 결과 집합을 구문 분석하고 쿼리에 따라 값을 N * M 차원 배열 (또는 목록)에 저장하는 자체 "테이블"클래스를 작성하는 것이 좋습니다. 이 방법을 사용하면 N 또는 M 치수 등의 크기와 같은 메타 정보를 저장할 수 있습니다.

관련 문제