Преобразование списка <String> в String [] в Java

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

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)

Ответ 1

Вы хотите

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

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

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

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

Ответ 2

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

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

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

См. javadoc для java.util.List для более.

Ответ 4

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

String[] strarray= $(strlist).toArray();

Ответ 5

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

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

String [] stringArray = list.toArray(новый String [list.size()]);

отличный ответ отсюда: fooobar.com/questions/10844/...

Ответ 6

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

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