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

73

如何将list中的字符串转换为array?以下代码会返回错误。

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
对于大多数出现错误的问题,您应该发布您收到的错误消息。 - a'r
1
我更喜欢stackoverflow。感谢在Google排名第一。 - Ninjaxor
6个回答

106

You want

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

请参考这里的文档,注意您还可以以一种使传递的数组被填充的方式调用此方法,而不仅仅是使用它来确定要返回的类型。另外请注意,当您打印数组时,您可能更喜欢...
System.out.println(Arrays.toString(strarray));

因为这会打印出实际的元素。


23
通常使用 strlist.toArray(new String[strlist.size()]); 更高效。 - Peter Lawrey

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


}

2
我也喜欢这个 toArray 方法的版本,因为它重复使用了参数 strarray,而不是返回一个新实例。 - James B

3

List.toArray() 返回的数组类型为 Object。如果需要得到 String 类型的数组,需要使用转换语法:

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

请参阅java.util.List的javadoc以获取更多信息。


2

我已经设计并实现了美元符号来处理这种任务:

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

你们的API看起来很棒,也许可以在一些方法(比如'sort')中加入比较器,这样会使它更加有用。 - Greg
谢谢!请随意使用Bitbucket发送补丁或开放功能请求。 - dfa
为了查看您的实现,我必须安装一个20M的程序来“克隆”您的254.3 KB源代码。 - Sawyer
请使用右侧的“获取源代码”按钮,从以下链接中获取最新版本的程序代码:http://bitbucket.org/dfa/dollar/get/tip.zip。 - dfa

1

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

如果你想把List<String>转换成字符串,可以使用StringUtils.join(slist,'\n');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接