'cannot find symbol error' when attempting to use .stream() on array in Java [duplicate]
Asked Answered
U

2

7

I am attempting to implement the Java.stream() method to multiple a list of numbers together in Java 8. I have imported the java.util.stream*; package. The static method is set to return an int and take in an array. However, when I call .stream().reduce() on the array, I get the error:

error: cannot find symbol
    int count = x.stream().reduce(1, (a, b) -> a * b).sum();
                 ^
  symbol:   method stream()
  location: variable x of type int[]

How can I properly use the stream() method to multiple the values of the array together in order?

The class I have defined as:

import java.util.stream.*;
public class Kata{
  public static int grow(int[] x){
    int count = x.stream().reduce(1, (a, b) -> a * b).sum();
    return count;  
  }

}
Upstairs answered 21/9, 2018 at 3:20 Comment(0)
G
7

You need Arrays.stream to convert an array into a stream:

int count = Arrays.stream(x).reduce(1, (a, b) -> a * b);

The sum() step you were doing at the end doesn't make sense, because after reduce we are already left with just a single primitive integer. So I removed it.

Glimmer answered 21/9, 2018 at 3:23 Comment(0)
P
2

First convert array into List to stream it, or you can also use Arrays.stream(x) as @Tim Biegeleisen suggestion

Arrays.asList(x).stream(x).reduce(1, (a, b) -> a * b);
Poulterer answered 21/9, 2018 at 3:25 Comment(1)
isn't Arrays.asList(x).stream().reduce(1, (a, b) -> a * b); enough? I don't understand the use of the x passed as a parameter to streamEmerald

© 2022 - 2024 — McMap. All rights reserved.