2017-10-04 59 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嗯,我增加了一些評論,然後你提到的答案。 –