toArray()方法

集合的toArray()方法返回一个Object数组,它就是Object不是其他类;但是我们如果需要获得对应特定类型的数组时:通常都是在取得数组元素时进行强制类型转换;
因为直接的转换是错的:

List<Integer> list = new ArrayList<>();
Integer[] objects = (Integer[]) list.toArray();

这段代码会报一个这样的异常:

Exception in thread "main" java.lang.ClassCastException: class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.Integer;

只能在取得元素时强转;

for (int i = 0; i < list.size(); i++) {
    int key = (int) objects[i];
}

这样是没有问题的;
可以通过遍历整个object数组然后逐个元素进行转型获得想要的数组;
细心的你可能发现java.util.Collection接口下有好几个toArray()方法,那么其他的方法怎么用:

<T> T[]toArray​(T[] a)

a:是用于保存集合所有内容的数组。
对于返回值,如果参数指定的数组能够容纳Set集合的所有内容,就使用该数组保存集合中的所有对象,并返回该数组;否则,返回一个新的能够容纳集合中所有内容的数组。
如果参数指定的数组长度大于集合的大小,那么数组的剩余空间全部复制为null值。

你可能感兴趣的:(java基础,java)