2017-10-04 18 views
-1

フロートにString []を変換し、私は配列String[]を持っていると私は、アレイFloat[]Javaの8つのストリーム:[]

に変換したいのですがeHttpServletRequest::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の文字列入力パラメータのdouble型のDoubleStreamの 'mapToDouble'を' map'に置き換えます。 –

答えて

0

Float[]アレイは、2番目のテストではまだ生成されています。

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

目的は 'Double []'ではなく 'Float []'を作成することです。 – lexicore

+0

@lexicore oops。修正する。 – Mena

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

あなたが生成するためにこれを試みることができますa Float[]アレイ:

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まあ、私はいくつかのコメントを追加し、あなたが言及している答え。 –

関連する問題