我有一个初始数组,array1其中包含 30 个元素,需要创建一个array2包含 中元素 0-14 的新数组array1。
我用作IntStream数组索引的映射器。但以下给出了错误:
Object[] array2 = IntStream.range(0,14).map(x -> (Object)array1[x]).toArray(Object[]::new);
Run Code Online (Sandbox Code Playgroud)
错误(Object)array1[x]:
The type of the expression must be an array type but it resolved to List<Object[]>
Run Code Online (Sandbox Code Playgroud)
在您的示例中,x是一种整数类型。您应该使用.mapToObj相反的map方法。
Object[] array2 = IntStream.range(0, 14)
.mapToObj(x -> array1[x])
.toArray(Object[]::new);
Run Code Online (Sandbox Code Playgroud)
小智 5
您也可以使用Arrays.copyOfRange()代替Stream.
Object[] array2 = Arrays.copyOfRange(array1, 0, 14);
Run Code Online (Sandbox Code Playgroud)