【发布时间】:2018-06-22 16:42:34
【问题描述】:
我正在尝试找到一种优雅的方法将 Java Stream<String> 转换为浮点数组。到现在为止我已经出来了:
Float[] data = input.map(Float::valueOf).toArray(Float[]::new);
但我实际上需要float[],当我尝试时:
float[] data = input.map(x -> Float.parseFloat(x)).toArray(size -> new float[]);
我得到一个错误,无法将Object[] 转换为float[],我不太明白。
我做错了什么?
【问题讨论】:
-
input流的元素类型是什么? -
没有
FloatStream,所以我认为如果不编写从Float或double转换的自定义收集器,这是不可能的。 -
double[]会这样做吗?如果是这样,您可以使用Stream#mapToDouble(...)获取DoubleStream -
为什么是
float而不是double?然后你可以使用DoubleStream。 -
副本完全不是 OP 想要的。如果有的话,this 是 OP 想要的。但即使这样也不能回答为什么它不起作用的问题。投票重新开放。
标签: java arrays java-stream