Search code examples
javajava-8java-stream

Java 8 Streams parsing to Integer


Does it exist a better way to parse String to Integer using stream than this :

String line = "1 2 3 4 5";
List<Integer> elements = Arrays.stream(line.split(" ")).mapToInt(x -> Integer.parseInt(x))
    .boxed().collect(Collectors.toList());

Solution

  • You can eliminate one step if you parse the String directly to Integer:

    String line = "1 2 3 4 5";
    List<Integer> elements = Arrays.stream(line.split(" ")).map(Integer::valueOf)
        .collect(Collectors.toList());
    

    Or you can stick to primitive types, which give better performance, by creating an int array instead of a List<Integer>:

    int[] elements = Arrays.stream(line.split(" ")).mapToInt(Integer::parseInt).toArray ();
    

    You can also replace

    Arrays.stream(line.split(" "))
    

    with

    Pattern.compile(" ").splitAsStream(line)
    

    I'm not sure which is more efficient, though.