Java的Collection.toArray方法

Java的Collection.toArray有两个重载方法:

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

第一个方法就不说了,分析一下第二个重载方法
<T> T[] toArray(T[] a)
用法:

Collection<String> coll = new ArrayList<>();
// coll.add...
String[] strs = new String[10];
coll.toArray(strs);
String[] strs2 = coll.toArray(strs);
  • 该方法返回包含此coll中所有元素的数组,返回的数组的运行时类型和指定数组的类型相同。
  • 如果,指定的数组能够容纳该coll,则用coll填充该数组,并返回该数组;
  • 否则,返回一个具有指定数组的运行时类型和此coll大小的新数组。
  • 如果指定的数组能够容纳coll,并有剩余空间,那么数组中紧接着coll尾部的那个元素会被设置为null

代码示例

public class ToArrayTest {

    /** 自定义类型A,保存着id */
    static class A {
        int id;
        A(int id) { this.id = id; }
        @Override
        public String toString() {
            return Integer.toString(id);
        }
    }

    public static void main(String[] args) {
        Collection<A> coll = new ArrayList<>();
        coll.add(new A(1));
        coll.add(new A(3));
        coll.add(new A(5));
        coll.add(new A(7));

        // 使用 new A[0] 来确定类型
        A[] as1 = coll.toArray(new A[0]);
        A[] as2 = new A[6];
        Arrays.fill(as2, new A(999));
        A[] as3 = coll.toArray(as2);

        System.out.println(Arrays.toString(as1));
        System.out.println(Arrays.toString(as2));
        System.out.println(Arrays.toString(as3));
    }

}
输出
[1, 3, 5, 7]
[1, 3, 5, 7, null, 999]
[1, 3, 5, 7, null, 999]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值