2017-10-04 52 views
-1

我有一个数组String[],我想转换为阵列Float[]爪哇8流:转换字符串[]到浮法[]

考虑e是经由HttpServletRequest::getParameterMap()供给的String[]。我想:

Arrays.stream(e.getValue()).mapToDouble(Float::parseFloat).boxed().toArray(Float[]::new)); 

了异常:

java.lang.ArrayStoreException:java.lang.Double中

于是我尝试:

Arrays.stream(e.getValue()).mapToDouble(Double::parseDouble).boxed().toArray(Float[]::new)); 

同样的结果。

+0

对于parseFloat的字符串输入参数,用'map'替换DoubleStream的DoubleStream的mapToDouble。 –

回答

0

您在第二次测试中仍然生成Float[]阵列。

对于Double[]结果,使用:

Arrays 
    .stream(e.getValue()) 
    .mapToDouble(Double::parseDouble) 
    .boxed() 
    .toArray(Double[]::new); 

对于Float[]结果(在这种情况下没有必要boxed),用途:

Arrays 
    .stream(e.getValue()) 
    .map(Float::parseFloat) 
    .toArray(Float[]::new); 
+0

目标是创建'Float []',而不是'Double []'。 – lexicore

+0

@lexicore oops。修正。 – Mena

9
Arrays.stream(e.getValue()).map(Float::valueOf).toArray(Float[]::new); 
0

你可以试试这个生成a Float[] array:

Arrays.stream(e.getValue()).map(Float::valueOf).toArray(Float[]::new); 

您必须处理可能的NumberFormatException

不幸的是,对于原始的float,没有FloatStream的类,但是因为无论如何你都想得到Float[],上面的代码就好了。

+0

重复[其他答案](https://stackoverflow.com/a/46565832/303810)。 – lexicore

+0

@Ivar谢谢我解决了这个问题。 –

+0

@lexicore嗯,我增加了一些评论,然后你提到的答案。 –