Ответ 1
Зависит от того, что вы хотите сделать. Оба правильные
ToArray() Возвращает массив, содержащий все элементы в этом списке в правильной последовательности (от первого до последнего элемента).
Обратитесь здесь
toArray (T [] a) Возвращает массив, содержащий все элементы в этом списке в правильной последовательности (от первого до последнего элемента); тип выполнения возвращаемого массива - тип указанного массива. Если список соответствует указанному массиву, он возвращается в нем. В противном случае новый массив выделяется типом среды выполнения указанного массива и размером этого списка.
Обратитесь здесь
В первом вы хотите получить массив. В последнем у вас есть массив, вы просто хотели его заполнить.
В вашем случае предпочтительна первая форма, так как вы просто хотите получить массив, не беспокоя размер или детали.
В основном это то, что происходит во втором случае:
- Размер списка - это меры.
- (a) Если размер списка меньше, чем размер массива, создается новый массив типа, предоставленного как аргумент.
(b) Иначе, список сбрасывается в указанном массиве.
Единственное преимущество этого - избегать кастинга. Две формы одинаковы. Если вы используете массив объектов. то есть.
myList.toArray() <==> toArray(new Object[0])
Теперь, если вы передадите неинициализированный массив, вы получите исключение NullPointerException. Лучший способ сделать это:
String[] y = x.toArray(new String[0]);
Пожалуйста, прочтите документ