在Java中将List <String>转换为String []

Chr*_*ian 70 java type-conversion

如何将String 列表转换为数组?以下代码返回错误.

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);
}
Run Code Online (Sandbox Code Playgroud)

错误:

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

jju*_*uma 100

你要

String[] strarray = strlist.toArray(new String[0]);
Run Code Online (Sandbox Code Playgroud)

请参阅此处以获取文档,并注意您也可以调用此方法,以便填充传递的数组,而不是仅使用它来确定要返回的类型.另请注意,您可能希望在打印阵列时使用

System.out.println(Arrays.toString(strarray));
Run Code Online (Sandbox Code Playgroud)

因为那将打印实际元素.

  • 使用strlist.toArray(new String [strlist.size()]); 通常更有效率. (22认同)

Pau*_*aul 18

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);


}
Run Code Online (Sandbox Code Playgroud)

  • 我也赞成这个版本的`toArray`方法,因为它重用了参数strarray,而不是返回一个新的实例 (2认同)