MG.*_*MG. 10 java lambda java-8
我试图将a转换double[]为float[]使用Java 8 lambda演算.到目前为止,我刚刚创建了一个应该修改的玩具方法.试图找到转换原始数组的帮助.大多数情况下,是否有任何方法可以摆脱guava转换,因为转换为List和返回对于大型数组来说太重了.
import com.google.common.primitives.Floats;
public static float[] doubleToFloat(double[] vector) {
Float[] f = Arrays.stream(vector).<Float>mapToObj(x -> (float) x).toArray(Float[]::new);
return Floats.toArray(Arrays.asList(f));
}
Run Code Online (Sandbox Code Playgroud)
没有专门的FloatStream,所以你想要的不是Streams API.
如果你想获得float(内存的一半double)的好处并仍然使用流,你将必须存储以ints编码的浮点数:
double[] doubles = new double[]{1.2, 3.5, 4};
int[] floatsAsInts = Arrays.stream(doubles)
.mapToInt(d -> Float.floatToRawIntBits((float) d))
.toArray();
Arrays.stream(floatsAsInts)
.forEach(i -> System.out.println(Float.intBitsToFloat(i)));
Run Code Online (Sandbox Code Playgroud)
你必须有一个非常好的理由来折磨你自己.除非你打算在这个数组中存储一亿个数字,否则你最好只使用double [].
| 归档时间: |
|
| 查看次数: |
2141 次 |
| 最近记录: |