但是,我正在处理,在这个版本中,我无法
使用这些策略(语法错误)。也许我就是不明白
这些方法引用的工作原理
我不明白你为什么用lambda做不到。
如果可以使用Java 8编译器,则可以编写接受
DoubleUnaryOperator
参数,它将是您需要将一个浮点映射到另一个浮点的函数,例如:
static void mapFunction(float[][] data, DoubleUnaryOperator function) {
for (int i = 0; i < data.length; i++) {
for (int j = 0; j < data[0].length; j++) {
data[i][j] = (float) function.applyAsDouble(data[i][j]);
}
}
}
例如,本例设置数组元素及其平方:
public static void main(String[] args) {
float[][] data = new float[][] { {0F,1F}, {2F,3F}};
mapFunction(data, a->a*a);
System.out.println(Arrays.deepToString(data));
}
输出:
[0.0,1.0],[4.0,9.0]]
如果您不能注意使用Java 8或+版本或任何第三方库,您可以引入自己的接口来将浮点映射到浮点,并使用匿名类而不是lambda,例如:
public interface FloatUnaryOpe