Java中将字符串ArrayList转换为数组的四种方法

Java中将String的ArrayList转换为String数组:

如果运行:
String[] result = (String[]) INPUT_LIST.toArray();
得到错误:
java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.String;

抛出了ClassCastException 。这是因为Java的泛型类型只在编译时存在;而在运行时,toArray()方法返回的数组并不知道其元素的具体类型,它们可以是String、Integer,甚至可以是不同类型的混合,因为Object类是所有其他类型的超类型。Java 抛出ClassCastException并拒绝Object[]到String[]的转换。

1、使用循环

String[] result = new String[INPUT_LIST.size()];
for (int i = 0; i < INPUT_LIST.size(); i++) {
result[i] = INPUT_LIST.get(i);
}

2、使用toArray(T[] a)方法
Collection接口定义了一个带有参数T[] a的toArray()方法:

String[] result = new String[INPUT_LIST.size()];
INPUT_LIST.toArray(result);

3、使用流API

String[] result = INPUT_LIST.stream().toArray(String[]::new);

Stream的toArray()方法接受一个生成器函数,该函数以所需的类型分配返回的数组。在这种情况下,我们可以简单地将String[]的构造函数作为方法引用,并将其作为函数传递给toArray() 。

4、Java 11+
如果我们使用Java 11或更高版本,我们可以直接调用Collection.toArray(generatorFunc)来获取转换后的数组,而无需先将列表转换为Stream:

String[] result = INPUT_LIST.toArray(String[]::new);

https://www.jdon.com/68731.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值