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

}
0

2 Answers 2

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.

Sign up to request clarification or add additional context in comments.

Comments

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

1 Comment

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 stream

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.