2014-04-18 3 views
0

Я ищу эту проблему с тех пор, и я не могу найти правильный ответ. Итак, у меня есть ArrayList массивов в виде объектов (ArrayList), заполненных результирующим набором строки SQL. Моя цель - преобразовать результат только одной строки в одномерный массив объектов.convert ArrayList <Object[]> to Object []

Я попытался несколько раз получить результаты моего исследования с этого сайта, но единственное, что я сделал, это то, как преобразовать одномерный массив ArrayList в простой массив. Надеюсь, вы, ребята, можете мне помочь. Благодаря!

Моя таблица выглядит так:

sizeid | diameter 
    1 | 32 
    2 | 40 

с SQL-команды «SELECT диаметром от размера» Я буду получать эти два числа 32 и 40, которые хранятся в виде простой таблицы 2х1.

| 32 | 
| 40 | 

Теперь я хочу иметь их в одномерном массиве.

метод для преобразования:

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; 
} 

метод для генерации ArrayList из класса SQLQuery:

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); 
    } 
} 

и простой GET-метод класса SQLQuery:

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

Объект [] obj = myArrayList.get (0) – Mik378

+0

Нет, я думаю, он хочет массив со всеми однозначными результатами из запрос. – Aioros

+0

eclipse отвечает на это сообщение об ошибке: «Тип несоответствия: невозможно преобразовать из Object to Object []» – 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

Спасибо, Марко! Теперь он работает нормально! – user3548416

+0

Почему странно, что элементы списка объектов являются массивами? Фактически каждый элемент списка объекта представляет результирующую строку SQL-запроса: строка может содержать несколько значений (столбец): это только частный случай, когда запрос выбирает только один столбец, поэтому мы имеем только массивы один предмет. – WoDoSc

+0

@Nicola Не странно, что элементы в списке являются массивами. Странно, что тип указанного списка «List ». –

0

Вы можете использовать подход, что предложенный Марко Топольник.

Однако я бы предложил написать собственный класс «Таблица», который анализирует набор результатов и помещает значения в размерный массив N * M (или список) в зависимости от вашего запроса. Таким образом, вы можете хранить метаинформацию, такую ​​как размер N или M, и т. Д.