web-dev-qa-db-ja.com

Java 8 intsの文字列をList <Integer>に変換

私は文字列を持っています:

String ints = "1, 2, 3";

Intのリストに変換したいと思います。

List<Integer> intList

この方法で文字列のリストに変換できます:

List<String> list = Stream.of("1, 2, 3").collect(Collectors.toList());

しかし、intのリストではありません。

何か案は?

13
Igor

文字列を分割し、各部分からストリームを作成する必要があります。メソッド splitAsStream(input) はまさにそれを行います:

Pattern pattern = Pattern.compile(", ");
List<Integer> list = pattern.splitAsStream(ints)
                            .map(Integer::valueOf)
                            .collect(Collectors.toList());

入力文字列の一部のStream<String>を返します。これは後でIntegerにマップして、リストに収集できます。

パターンを定数に保存し、必要になるたびに再利用したい場合があることに注意してください。

23
Tunaki

正規表現の分割はあなたが探しているものです

Stream.of(ints.split(", "))
      .map(Integer::parseInt)
      .collect(Collectors.toList());
18
Lukas Eder

Array関数asListを使用して、Java8の方法で変換できます。

空白を削除することを忘れないでください。

 List<Integer> erg = Arrays.asList(ints.replace(" ", "").split(",")).stream().map(Integer::parseInt).collect(Collectors.toList());

編集:申し訳ありませんが、私はそれが単一の文字列であることを見ていない、それは文字列の配列だと思った。

2