Заполнить массив данными списка - PullRequest
2 голосов
/ 29 марта 2010

Как мне заполнить массив данными, предоставленными одним списком?

Например, у меня есть список со строками:

List l = new ArrayList<String>();
l.add("a");
l.add("b");
l.add("c");

тогда я хочу скопировать эти данные в массив String:

String[] array = ?

Ответы [ 5 ]

9 голосов
/ 29 марта 2010

В списке есть метод toArray () ...
Сначала нужно выделить массив соответствующего размера (обычно list.size ()), а затем передать его методу toArray в качестве параметра. Массив будет инициализирован с содержимым списка.

Например:

String[] myArray = new String[myList.size]();
myList.toArray(myArray);

Вы также можете сделать новый вызов в скобках toArray

7 голосов
/ 29 марта 2010

Сначала вам нужно указать конкретный тип List - List<String> (не оставляйте его необработанным).

Тогда вы можете сделать

String[] array = list.toArray(new String[list.size()]);
3 голосов
/ 29 марта 2010

Вы можете использовать метод toArray(T[] a):

String[] arr = list.toArray(new String[0]);

Или поочередно:

String[] arr = list.toArray(new String[list.size()]);

Разница между ними заключается в том, что последнему может не нужно выделять новый массив.


Effective Java 2nd Edition : пункт 23. Не используйте необработанные типы в новом коде.

JLS 4.8 Типы сырья

Использование необработанных типов разрешено только в качестве уступки совместимости устаревшего кода. Использование необработанных типов в коде, написанном после введения универсальности в язык программирования Java, настоятельно не рекомендуется. Возможно, что будущие версии языка программирования Java будут запрещать использование необработанных типов.


Не имейте привычку называть идентификатор l. Это выглядит очень похоже на 1.

2 голосов
/ 29 марта 2010

Синтаксис немного тупой; Вы должны предоставить свой собственный созданный массив в качестве входных данных.

String[] array = l.toArray(new String[l.size()]);
1 голос
/ 29 марта 2010
String[] array = new String[l.size()];
l.toArray(array);
...