2011-01-07 2 views
0
public class TestClass{ 


private String divisions[] ={}; 


public void doAction(){ 

Collection testArray = new ArrayList(); 
// put testArray will data 

    divisions = (String []) testArray.toArray(division); //should i use this 
divisions = (String []) testArray.toArray(new String [] {}); //should i use this? 

} 

} 

, если я использую случай 1, и я вызываю doaction несколько раз, деление, что-то покажет неправильные записи , если я использую case2, подразделения всегда будут показывать правильные записи. мое предположение должно использовать случай 2?правильный способ использования списка массива?

ответ

0

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

Однако случай 2 не так уж и полезен, потому что если массив, который вы передаете (который имеет длину в нуле в вашем примере), недостаточно велик, ArrayList просто будет создавать новый массив.

+0

так, что такое правильный способ использовать ToArray ToArray (новый String [] {}) ИЛИ ToArray (новая строка [list.size()])? – cometta

+0

Если вы создаете новый массив, то toArray (новый String [list.size()]) создаст правильный размер. Другой способ будет работать, но это может быть не так эффективно. Случай 1, допустим в ситуациях, когда вам нужны данные в существующем массиве, однако в представленном вами примере это будет проблематично. – jzd

0

Корпус 2 является «более правильным» способом его использования.

По существу, вы сообщаете методу, какой тип вы хотите получить в результате массив.

0

Предпочитают вторую только

divisions = (String []) testArray.toArray(new String [] {}); 
Смежные вопросы