【问题标题】:Converting List<String> to String[] in Java在 Java 中将 List<String> 转换为 String[]
【发布时间】:2011-02-02 21:22:30
【问题描述】:

如何将字符串的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)

【问题讨论】:

  • 对于大多数有错误的问题,您应该发布您收到的错误消息。
  • 我更喜欢stackoverflow。感谢您在 google 中排名第一。

标签: java type-conversion


【解决方案1】:

你想要

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

有关文档,请参阅here,并注意您也可以通过填充传递的数组的方式调用此方法,而不仅仅是使用它来计算要返回的类型。另请注意,当您打印数组时,您可能更喜欢

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

因为这将打印实际的元素。

【讨论】:

  • 使用 strlist.toArray(new String[strlist.size()]);通常效率更高。
【解决方案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);


}

【讨论】:

  • 我也喜欢这个版本的toArray 方法,因为它重用了参数strarray,而不是返回一个新实例
【解决方案3】:

List.toArray() 必然返回一个对象数组。要获取 String 数组,需要使用强制转换语法:

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

有关更多信息,请参阅 java.util.List 的 javadoc。

【讨论】:

    【解决方案4】:

    我为这类任务设计并实现了Dollar

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

    【讨论】:

    • 您的 $ API 看起来很棒,也许像 'sort' 这样的几个方法可以接受比较器,使其更加有用。
    • 谢谢!随时使用 bitbucket 向我发送补丁或开放功能请求。
    • 为了查看您的实现,我必须安装 20M 程序来“克隆”您的 254.3 KB 源代码。
    • 使用右侧的“获取源”按钮:这里是最新版本的链接bitbucket.org/dfa/dollar/get/tip.zip
    【解决方案5】:

    希望这可以帮助那里的人:

    列表列表 = ..;

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

    来自这里的好答案:https://stackoverflow.com/a/4042464/1547266

    【讨论】:

      【解决方案6】:

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

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

      【讨论】:

        猜你喜欢
        • 2021-09-17
        • 2020-06-10
        • 1970-01-01
        • 2018-09-06
        • 2022-01-11
        • 1970-01-01
        • 2022-01-05
        • 2019-09-10
        • 1970-01-01
        相关资源
        最近更新 更多