Java · 使用 lambda 对原始矩阵进行装箱和拆箱
Java · Box and unbox primitive matrices with lambda
经过大量搜索,我终于设法使用 lambda 表达式编写了以下方法来装箱和拆箱原始数组(具体为 double
):
public static Double[] box(double unboxed[]) {
return Arrays.stream(unboxed).boxed().toArray(Double[]::new);
}
public static double[] unbox(Double boxed[]) {
return Stream.of(boxed).mapToDouble(Double::doubleValue).toArray();
}
但现在我需要对 double[][]
和 Double[][]
做同样的事情,但我仍然不太了解 lambda 表达式以提出解决方案,我也没有找到任何搜索.
实际上,由于其他原因,我最终需要将我的原始矩阵包装在 class 中,所以我不再需要这样做,但我认为有一个答案以备将来参考会很有用.
二维数组是数组的数组 - 您可以对其进行流式处理,然后单独处理每个元素,它本身就是一个数组。一种相对简洁的方法是重用 box
和 unbox
方法。
public static Double[][] box(double unboxed[][]) {
return Arrays.stream(unboxed).map(Boxer::box).toArray(Double[][]::new);
}
public static double[][] unbox(Double boxed[][]) {
return Arrays.stream(boxed).map(TmpTest::unbox).toArray(double[][]::new);
}
经过大量搜索,我终于设法使用 lambda 表达式编写了以下方法来装箱和拆箱原始数组(具体为 double
):
public static Double[] box(double unboxed[]) {
return Arrays.stream(unboxed).boxed().toArray(Double[]::new);
}
public static double[] unbox(Double boxed[]) {
return Stream.of(boxed).mapToDouble(Double::doubleValue).toArray();
}
但现在我需要对 double[][]
和 Double[][]
做同样的事情,但我仍然不太了解 lambda 表达式以提出解决方案,我也没有找到任何搜索.
实际上,由于其他原因,我最终需要将我的原始矩阵包装在 class 中,所以我不再需要这样做,但我认为有一个答案以备将来参考会很有用.
二维数组是数组的数组 - 您可以对其进行流式处理,然后单独处理每个元素,它本身就是一个数组。一种相对简洁的方法是重用 box
和 unbox
方法。
public static Double[][] box(double unboxed[][]) {
return Arrays.stream(unboxed).map(Boxer::box).toArray(Double[][]::new);
}
public static double[][] unbox(Double boxed[][]) {
return Arrays.stream(boxed).map(TmpTest::unbox).toArray(double[][]::new);
}