使用Java 8,将字符串数组转换为整数数组的最简单方法是什么?

18

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

2
这回答解决了您的问题吗?将字符串数组转换为整数数组 - Mr. Jain
3个回答

47

例如:

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

因此,将String[]Stream使用mapToInt调用Integer.parseInt并将每个元素转换为int。 然后只需在结果IntStream上调用toArray以返回数组。


哇!这是Java吗?肯定比我的解决方案更整洁。感谢您的快速回复! - Irvin Denzel Torcuato
1
Java 8,是的。 - Boris the Spider
3
@MohammadFaisal 这是Java 8语法,请在教程中了解它。 - Boris the Spider
如何将其作为Integer[]数组而不是int[]数组获取? - Ridhuvarshan
我已经尝试过同样的事情。它可以工作并且我得到了一个int[]数组。我需要一个整数数组。我可以使用这段代码https://dev59.com/l3NA5IYBdhLWcg3wpfmu#27043087传递int[]数组来获取它,但是有没有可能一步完成呢? - Ridhuvarshan
显示剩余5条评论

19

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

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

Pattern.compile(" ") 的结果可以被记忆并重复使用。


3
哇,很棒。不知道splitAsStream - Boris the Spider

2
您可以直接从分割中获取数组:
String input; //Obtained somewhere
...
int[] result = Arrays.stream(input.split(" "))
        .mapToInt(Integer::valueOf)
        .toArray();

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接