Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按类型将集合转换为数组_Java_Arrays_Collections - Fatal编程技术网

Java 按类型将集合转换为数组

Java 按类型将集合转换为数组,java,arrays,collections,Java,Arrays,Collections,我测试了这段代码: Collection l = new ArrayList<Object>(); l.add(5); l.add("test"); l.add(6); Integer[] arr= l.toArray(new Integer[2]); 可能还有其他过滤方法,但我需要了解toArray(Object[]a)方法。为什么我不能通过告诉数组的类型和大小进行过滤 为什么我不能通过告诉数组的类型和大小进行过滤 因为这不是toArray()所做的,它也没有说它可以用作过滤

我测试了这段代码:

Collection l = new ArrayList<Object>();

l.add(5);
l.add("test");
l.add(6);

Integer[] arr= l.toArray(new Integer[2]);
可能还有其他过滤方法,但我需要了解
toArray(Object[]a)
方法。为什么我不能通过告诉数组的类型和大小进行过滤

为什么我不能通过告诉数组的类型和大小进行过滤

因为这不是
toArray()
所做的,它也没有说它可以用作过滤器

函数和API对它们做什么(有时是如何做的)有定义。如果一个函数不是设计用来做什么的,你就不能期望它做你想做的事情

为什么我不能通过告诉数组的类型和大小进行过滤

因为这不是
toArray()
所做的,它也没有说它可以用作过滤器


函数和API对它们做什么(有时是如何做的)有定义。如果函数的设计不是这样的,您就不能期望它执行您希望它执行的操作。

toArray
尝试将整个集合存储在给定数组中。如果你想过滤它,你必须自己过滤。例如:

Integer[] arr = 
    l.stream().filter(x -> x instanceof Integer).toArray(Integer[]::new);

toArray
尝试在给定数组中存储整个集合。如果你想过滤它,你必须自己过滤。例如:

Integer[] arr = 
    l.stream().filter(x -> x instanceof Integer).toArray(Integer[]::new);

请查看该方法的java文档。每个方法都按照它向外界声明的契约(按照签名或java文档)工作

T[]toArray(T[]a);在其java文档中明确指出了以下语句。
Throws:ArrayStoreException-如果指定数组的运行时类型不是此集合中每个元素的运行时类型的超类型


在您的案例中,每个元素的类型都不是
整数

请查看该方法的java文档。每个方法都按照它向外界声明的契约(按照签名或java文档)工作

T[]toArray(T[]a);在其java文档中明确指出了以下语句。
Throws:ArrayStoreException-如果指定数组的运行时类型不是此集合中每个元素的运行时类型的超类型


在您的情况下,每个元素的类型不是
Integer

toArray
不用于过滤集合;将特定类型的数组传递给
toArray
是将整个集合复制到该数组的指令。
toArray
不用于过滤集合;将特定类型的数组传递给
toArray
是一条将整个集合复制到该数组的指令。@YassinHajaj编辑并没有改善代码的可读性,它确实改善了很多。@YassinHajaj编辑并没有改善代码的可读性,它确实改善了很多。
<T> T[] toArray(T[] a); Clearly says in its java doc the below statement.