首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当尝试在Java中的数组上使用.stream()时,‘找不到符号错误’

当尝试在Java中的数组上使用.stream()时,‘找不到符号错误’
EN

Stack Overflow用户
提问于 2018-09-21 11:20:37
回答 2查看 9.8K关注 0票数 3

我正尝试在Java8中实现Java.stream()方法来对数字列表进行多重运算。我已经导入了java.util.stream*;包。静态方法被设置为返回一个int并接受一个数组。但是,当我在数组上调用.stream().reduce()时,我得到错误:

代码语言:javascript
运行
复制
error: cannot find symbol
    int count = x.stream().reduce(1, (a, b) -> a * b).sum();
                 ^
  symbol:   method stream()
  location: variable x of type int[]

如何正确使用stream()方法将数组的值按顺序相乘?

我定义的类是:

代码语言:javascript
运行
复制
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;  
  }

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-21 11:23:31

您需要使用Arrays.stream将数组转换为流:

代码语言:javascript
运行
复制
int count = Arrays.stream(x).reduce(1, (a, b) -> a * b);

您在最后执行的sum()步骤没有任何意义,因为在执行reduce之后,我们只剩下一个原始整数。所以我把它移走了。

票数 4
EN

Stack Overflow用户

发布于 2018-09-21 11:25:37

首先将数组转换为List进行流式传输,或者也可以使用Arrays.stream(x) @Tim Biegeleisen suggestion

代码语言:javascript
运行
复制
Arrays.asList(x).stream(x).reduce(1, (a, b) -> a * b);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52436120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档