使用Java 8将String数组转换为int数组的最简单方法是什么?

Irv*_*ato 13 java arrays java-8 java-stream

我目前正在学习如何使用Java,我的朋友告诉我,使用Java 8时可以简化这段代码.他指出parseIntArray可以简化.你会如何在Java 8中做到这一点?

public class Solution {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String[] tokens = input.nextLine().split(" ");
        int[] ints = parseIntArray(tokens);
    }

    static int[] parseIntArray(String[] arr) {
        int[] ints = new int[arr.length];
        for (int i = 0; i < ints.length; i++) {
            ints[i] = Integer.parseInt(arr[i]);
        }
        return ints;
    }
}
Run Code Online (Sandbox Code Playgroud)

Bor*_*der 34

例如:

static int[] parseIntArray(String[] arr) {
    return Stream.of(arr).mapToInt(Integer::parseInt).toArray();
}
Run Code Online (Sandbox Code Playgroud)

因此,采取StreamString[].使用mapToInt调用Integer.parseInt每个元素,并转换为一个int.然后只需调用toArray结果IntStream返回数组.

  • @MohammadFaisal它是Java 8语法,在[教程](http://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html)中阅读. (3认同)

Hol*_*ger 19

您可以跳过创建令牌String[]数组:

Pattern.compile(" ")
       .splitAsStream(input.nextLine()).mapToInt(Integer::parseInt).toArray();
Run Code Online (Sandbox Code Playgroud)

当然,结果Pattern.compile(" ")可能会被记住并重复使用.

  • 哇,太漂亮了.不知道`splitAsStream`. (3认同)