使用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数组的IntStream
和toArray
。