[英]Copy 2D array in Java using streams
这个问题与我如何在Java中复制二维数组有关?
但是,您将如何使用Java 8/9中的流复制数组?
这是我想出的:
static int[][] cloneArray(int[][] array) {
return IntStream.range(0, array.length).collect(
() -> new int[array.length][],
(ints, i) -> ints[i] = array[i].clone(),
(ints, i) -> {});
}
有没有使用流复制2D数组的更优雅或更有效的方法?
return Arrays.stream(x).map(r->Arrays.copyOf(r, r.length)).toArray(int[][]::new);
我认为这是一种改进,因为您没有分配nxm数组,而是将所有m个长度的数组替换为一个副本。
您可以使用以下方法直接进行
static int[][] cloneArray(int[][] x) {
return Arrays.stream(x).map(int[]::clone).toArray(int[][]::new);
}
请注意,这适用于具有public
方法ElementType clone()
任何ElementType
,例如
static ElementType[] cloneArray(ElementType[] x) {
return Arrays.stream(x).map(ElementType::clone).toArray(ElementType[]::new);
}
在您的情况下, ElementType
恰好是int[]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.