Collection.toArray()

Java的Collection.toArray有两个重载方法: 从集合转换成数组

  • Object[] toArray()
  • <T> T[] toArray(T[] a)
Object[] toArray()

此方法返回的Object[],是不能被强制转换为子元素类型的

 public static void main(String[] args) {
        List<String> list = new ArrayList<String>();
        list.add("2020");
        list.add("good");
        list.add("good");
        list.add("study");
        list.add("day");
        list.add("day");
        list.add("up");
        Object[] obj = list.toArray();
        System.out.println(Arrays.toString(obj)); // [2020, good, good, study, day, day, up]
        String[] str=(String[])list.toArray(); // java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
        System.out.println(Arrays.toString(str));

		//通常的做法是
		String[] strArr=new String[list.size()];
        String[] array = list.toArray(strArr);
        System.out.println(Arrays.toString(array));// [2020, good, good, study, day, day, up]
}
<T> T[] toArray(T[] a)

返回包含此list中所有元素的数组,返回的数组的类型(str)和指定数组(s)的类型相同必须相同。

//指定的数组(s)容量小于list数组的容量,也会返回一个与list大小相同的数组,指定数组容量大于等于0都可以。
String[] s = new String[0];
String[] str = list.toArray(s);
System.out.println(Arrays.toString(str));// [2020, good, good, study, day, day, up]

//如果指定数组(s1)的容量大于了list中元素的容量,有剩余空间,那么数组中紧接着list尾部的那些元素会被设置为null
String[] s1 = new String[10];
String[] str1 = list.toArray(s1);
System.out.println(Arrays.toString(str1));// [2020, good, good, study, day, day, up, null, null, null]

ArrayList.toArray()源码
在这里插入图片描述


TODO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值