2016-04-15 8 views
6

String[]Collection<Integer>に簡単に変換する方法はありますか?これは私が今やっていることですが、それが良いかどうかは分かりません。Integerのコレクションへの文字列の配列ですか?

String[] myStringNumbers; 

Arrays.stream(Arrays.asList(myStringNumbers).stream().mapToInt(Integer::parseInt).toArray()).boxed().collect(
        Collectors.toList()); 

答えて

8

中間配列を作る必要はありません。ただ、解析し、(Collectors.toListの静的インポートを)収集:コレクションに結果をボックスになるようparseIntを使用する必要が

Arrays.stream(myStringNumbers).map(Integer::parseInt).collect(toList()); 
3

、および@Mishaが述べたように、あなたは、ストリームを作成するためにArrays.streamを使用することができます。だから、次のように使用することができます。

Arrays.stream(myStringNumbers).map(Integer::decode).collect(Collectors.toList()); 

は(、0であなたは驚きをしたくない場合は#または0xを開始してはならないと数字)このは、任意のエラー処理を行いませんのでご注意ください。ベース10の数字だけが必要な場合は、Integer::valueOfをお勧めします。

String[] myStringNumbers = {"1", "2"}; 
List<Integer> list = Stream.of(myStringNumbers).map(Integer::valueOf).collect(Collectors.toList()); 

私はそれはいくつかの助けとなることを願って:ここでは

+2

'int'値はどちらの場合もボックス化されていますので、' valueOf'か 'parseInt'のどちらを使用しても違いはありません。そして、 'decode'のような別のメソッドの使用を推奨して、このメソッドが別の目的を持っているという事実によって引き起こされる驚きについての警告を後にすることは非常に奇妙です。 – Holger

0

は私が考えるものです。 :)

関連する問題