使用数学和流在Java 8中重新映射数组

Ole*_*Ole 2 java arrays math java-8 java-stream

Apache commons math有一个RealVector接口支持mapToSelf流体接口,其工作方式如下:

 RealVector result = v.mapAddToSelf(3.4).mapToSelf(new Tan()).mapToSelf(new Power(2.3));
Run Code Online (Sandbox Code Playgroud)

如果我有一个double[]数组,我将如何使用Java 8流和Java Math做类似的事情?必须重用相同的数组.

TIA,Ole

Ale*_* C. 9

如果您已有阵列并且想要在适当的位置进行修改,则可以使用Arrays.setAll:

Arrays.setAll(arr, i -> Math.pow(Math.tan(arr[i] + 3.4), 2.3));
Run Code Online (Sandbox Code Playgroud)

而万一你希望修改原始数组,你可以创建一个DoubleStream由它和映射每个元素:

double[] res = 
    DoubleStream.of(arr).map(d -> Math.pow(Math.tan(d + 3.4), 2.3)).toArray();
Run Code Online (Sandbox Code Playgroud)