2013-07-18 2 views
0

Итак, вот небольшая проблема, я столкнулся - есть простой способ в Java, чтобы броситьJava - Листинг ArrayList <Object[]> Объекту [] []?

ArrayList<Object[]> array; 

в

Object[][] data; 

?

+1

'array.toArray()'. –

+1

Почему вы назвали «массив» списка? – Bohemian

+0

@Bohemian Он подходит к соглашениям об именах и представляет собой * массив * Список в любом случае. – hexafraction

ответ

6
Object[][] data=array.toArray(); 

Внутренний объект [] рассматривается как тип объекта. Затем они помещаются в свой собственный массив, приводя к массиву объектов массива объектов или просто двумерному массиву.

1

Кастинг - это не то решение, которое вы ищете. Кастинг по существу позволит вам использовать метод, который вы применяете к определенному типу класса. Пример гипса:

(((ClassA) ClassB) .method())

Таким образом, возвращаемое значение может быть помещено внутрь объекта CLASSA от экземпляра объекта ClassB, который содержит метод().

То, что вы хотите сделать, с другой стороны, - создать многомерный массив или 2D-массив. Это по существу массив массивов, где arrayA [i] = arrayB [];

Например:

Object[] objectArray = new Object[5]; 
Object[][] = objectArray2D = new Object[][]; 

objectArray2D[i] = objectArray; 

Вот точка на ваш вопрос, хотя, если создать многомерный массив, то почему бы вам кормить его только один экземпляр массива. По существу, что вы создали бы в приведенном выше примере, это массив внутри массива, и поскольку вы будете давать ему только 1, индексирование массива всех объектов внутри массива будет таким же, как если бы у вас был один массив, но с одним дополнительное размещение. Поясню:

objectArray [0] == объект, расположенный на первом слоте objectArray

в то время как objectArray2D [0] [0] == точно такой же объект, как объект в objectArray [0]

Вы не получаете никаких преимуществ, используя многомерный массив для одного массива. Если бы вы спросили 2D-массив для индекса [1] [0], вы получили бы исключение за пределы.

Наконец, я бы предложил создать конкретную форму массива, такую ​​как int [] или string []. Проблема с массивом Object [] заключается в том, что вы можете хранить что-либо, что считается объектом в массиве, что позволяет использовать потенциальный кластер из разных типов объектов внутри одного массива. Например, у вас может быть objectArray [0] = int 1; и objectArray [1] = String one; Если вы не хотите быть очень конкретным в использовании массива, возможно, лучше использовать один тип объекта в качестве массива.

В любом случае окончательное решение сделать именно то, что вы хотели сделать это следующим образом:

ArrayList<Object[]> array; 
Object[][] data; 

public void changeToAnArray(ArrayList<Object[]> array, Object[][] data) 
{ 
    this.array = array.toArray(); 
    this.data[0] = array; 
} 

Также к сведению точку в ArrayList, чтобы иметь 2D массив в сущности без необходимости проанализировать индексы.

Пожалуйста, не стесняйтесь исправить детали, которые я ошибаюсь < < все еще учится.

Смежные вопросы