java - java8 stream toArray 问题 - 为什么我不需要在这里为 int[][]::new 指定数组大小?
问题描述
使用下面的代码,我可以复制二维数组,但为什么我不需要在这里为 int[][]::new 指定数组大小?
int[][]source= {{0, 1, 0}, {0, 0, 1}, {1, 1, 1}, {0, 0, 0},{0, 0, 0}};
int[][] destination=Arrays.stream(source)
.map(a -> Arrays.copyOf(a, a.length))
.toArray(int[][]::new);
解决方案
因为你提供的不是数组,而是对构造数组的方法的引用。该toArray
实现将提供调用构造函数的大小。
推荐阅读
- sql - 基于计数使用 HeidiSQL 删除记录
- java - spring boot feign 客户端返回“FileUploadException:请求被拒绝,因为没有找到多部分边界”
- swiftui - 升级到 Xcode 12 后,SwiftUI 列表视图有不同的颜色
- arrays - React .map 仅返回第一项
- android - 如何使用 FFmpeg for android 编译 OpenCV 4.4?
- android - 如何将downloadImageurl保存到firestore?
- python - 我怎样才能让“for循环”正常工作?
- scala - Scala Spark 使用 Window 函数查找最大值
- python-3.x - Catkin_make 找不到 Boost?
- python - 使用 2D 索引数组对 3D 数组值进行 Numpy 赋值