Преобразование списка <String>в строку [] в Java - PullRequest
69 голосов
/ 31 марта 2010

Как мне преобразовать список строк в массив ? Следующий код возвращает ошибку.

public static void main(String[] args) {
    List<String> strlist = new ArrayList<String>();
    strlist.add("sdfs1");
    strlist.add("sdfs2");
    String[] strarray = (String[]) strlist.toArray();       
    System.out.println(strarray);
}

Ошибка:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
    at test.main(test.java:10)

Ответы [ 6 ]

98 голосов
/ 31 марта 2010

Вы хотите

String[] strarray = strlist.toArray(new String[0]);

См. здесь для документации и обратите внимание, что этот метод можно также вызывать таким образом, чтобы он заполнял переданный массив, а не просто использовал его для определения, какой тип возвращать. Также обратите внимание, что, возможно, при печати массива вы предпочтете

System.out.println(Arrays.toString(strarray));

, так как это напечатает фактические элементы.

18 голосов
/ 31 марта 2010
public static void main(String[] args) {
    List<String> strlist = new ArrayList<String>();
    strlist.add("sdfs1");
    strlist.add("sdfs2");

    String[] strarray = new String[strlist.size()]
    strlist.toArray(strarray );

    System.out.println(strarray);


}
3 голосов
/ 31 марта 2010

List.toArray() обязательно возвращает массив Object. Чтобы получить массив String, вам нужно использовать синтаксис приведения:

String[] strarray = strlist.toArray(new String[0]);

Подробнее смотрите в javadoc для java.util.List

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

Я разработал и внедрил Доллар для такого рода задач:

String[] strarray= $(strlist).toArray();
0 голосов
/ 03 марта 2014

String [] strarray = strlist.toArray (новая строка [0]);

если вы хотите, чтобы List преобразовался в строку использовать StringUtils.join (slist, '\ n');

0 голосов
/ 03 января 2014

надеюсь, что это может кому-то помочь:

Список списка = ..;

String [] stringArray = list.toArray (новая строка [list.size ()]);

отличный ответ отсюда: https://stackoverflow.com/a/4042464/1547266

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...