【问题标题】:Java · Box and unbox primitive matrices with lambdaJava · 使用 lambda 对原始矩阵进行装箱和拆箱
【发布时间】:2017-10-02 18:39:05
【问题描述】:

经过大量搜索,我终于设法编写了以下方法来使用 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 表达式了解不够,无法提出解决方案,也没有找到任何搜索结果。

实际上,由于其他原因,我最终需要将原始矩阵包装在一个类中,所以我不再需要这样做,但我认为有一个答案以供将来参考会很有用。

【问题讨论】:

    标签: java matrix lambda boxing unboxing


    【解决方案1】:

    2D 数组是数组的数组 - 您可以对其进行流式传输,然后单独处理每个元素,它本身就是一个数组。一种相对简洁的方法是重用您的 boxunbox 方法。

    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);
    }
    

    【讨论】:

    • 酷,谢谢!而且,毫不奇怪,添加更多括号会增加这些方法可以使用的维度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    • 2011-08-29
    • 1970-01-01
    • 2011-02-28
    • 1970-01-01
    相关资源
    最近更新 更多