Java 8 Streams解析为Integer

Spo*_*ngi 6 java java-8 java-stream

是否存在使用流将String解析为Integer的更好方法:

 String line = "1 2 3 4 5";
List<Integer> elements = Arrays.stream(line.split(" ")).mapToInt(x -> Integer.parseInt(x))
    .boxed().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 10

如果直接将String解析为Integer,则可以消除一步:

String line = "1 2 3 4 5";
List<Integer> elements = Arrays.stream(line.split(" ")).map(Integer::valueOf)
    .collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

或者你可以通过创建一个int数组而不是一个数组来坚持原始类型,从而提供更好的性能List<Integer>:

int[] elements = Arrays.stream(line.split(" ")).mapToInt(Integer::parseInt).toArray ();
Run Code Online (Sandbox Code Playgroud)

你也可以替换

Arrays.stream(line.split(" "))
Run Code Online (Sandbox Code Playgroud)

Pattern.compile(" ").splitAsStream(line)
Run Code Online (Sandbox Code Playgroud)

不过,我不确定哪个更有效率.