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

我目前正在学习如何使用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; } } 

例如:

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

所以拿一个String[] Stream String[] 。 使用mapToInt为每个元素调用Integer.parseInt并转换为int 。 然后在结果IntStream上调用toArray返回数组。

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

 Pattern.compile(" ") .splitAsStream(input.nextLine()).mapToInt(Integer::parseInt).toArray(); 

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

您也可以直接从拆分中获取数组:

 String input; //Obtained somewhere ... int[] result = Arrays.stream(input.split(" ")) .mapToInt(Integer::valueOf) .toArray(); 

在这里, Arrays有一些很好的方法可以从数组中获取流,因此您可以直接在调用中拆分它。 之后,使用Integer::valueOf调用mapToInt以获取所需int数组的IntStreamtoArray