2014-10-11 38 views
11

我目前在学习如何使用Java,而且我的朋友告诉我,使用Java 8时可以简化这段代码。他指出parseIntArray可以被简化。你将如何在Java 8中做到这一点?使用Java 8将字符串数组转换为int数组的最简单方法是什么?

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; 
    } 
} 

回答

30

例如:

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

所以采取String[]Stream。使用mapToInt为每个元素调用Integer.parseInt并转换为int。然后只需在结果IntStream上拨打toArray即可返回数组。

+0

哇!这是Java吗?当然,这比我的解决方案更加整洁。感谢您的快速响应! – 2014-10-11 10:17:50

+1

@IervinDenzelTorcuato Java 8,是的。 – 2014-10-11 10:18:28

+0

'Integer :: parseInt'什么'::'在这里工作? – 2014-10-11 10:31:32

18

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

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

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

+3

哇,漂亮。不知道'splitAsStream'。 – 2014-10-11 10:25:17

1

你可以,也直接从拆分,获得数组:

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

这里,Arrays有一些不错的方法来获得从数组流,这样你就可以直接在电话拆呢。之后,拨打mapToIntInteger::valueOf以获得您所需的int数组的IntStreamtoArray

相关问题