当前位置: 首页 > 面试题库 >

如何使用Java 8流将列表中的值相乘

席波娃
2023-03-14
问题内容

流中是否有一个sum()等效方法可以执行流中给定值的乘法?

我有一个这样的整数列表:

List<Integer> listOfIntegers = new ArrayList<>();
listOfIntegers.addAll(Arrays.asList(1,4,2,7,5));

我能够获取所有整数的总和,但是无法找到可以将值相乘并给出输出的API。

listOfIntegers.stream().mapToInt(a -> a).sum();

如果我尝试使用forEach进行操作,那么我将无法存储结果,因为仅允许在其中使用最终变量。

除此之外,还有其他选择吗?


问题答案:

尝试减少流,它应该有所帮助。

喜欢:

listOfIntegers.stream().reduce(1, (a, b) -> a * b)

此链接提供有关如何使用reduce的更多信息。



 类似资料:
  • 我有一门课 以及对象列表 假设我已经填充了每个对象的字段。现在我想用相同的值填充每个对象的“学校”字段,比如“XYZ学校”。如何使用Java 8 stream()实现这一点?我试着用下面的方法,但它给出了错误。 我应该在那里使用还是其他什么东西?我如何在中收集结果?

  • 如何使用stream转换下面的代码而不使用for each循环。 getAllSubjects()返回所有列表,每个主题都有。所有列表应合并为。 需要从中获取 对象模型:

  • 我有一个映射“m”和一个列表“l”,现在我想从那个映射“m”中获取值,使用“l”中可用的键列表。我想用Java 8流的概念,任何人都可以在这方面提供帮助。 我编码打印这些值,但我需要的是将值放入列表中 list.stream().foreach(s->{system.out.println(map.get(s));});

  • 假设我有这个命令代码: 我该如何以函数式的方式写这篇文章(就像fold在Scala中做的那样)?

  • 我想用Java8lambda表达式在java列表中找到max值,所以,我有一个类叫TicketMaster,项表是TicketMasterLog,在TicketMasterLog类中我有StatusMaster类的statusId引用列,所以这里我想在TicketMasterLog列表中找到max statusId,下面我给出我的代码请参考 而TicketMasterItem表是 因此,在列表中,

  • 问题内容: Collector的Javadoc显示了如何将流的元素收集到新的List中。有没有一种将结果添加到现有ArrayList中的方法? 问题答案: 注意: osid的答案 显示了如何使用来添加到现有集合。这是对现有集合进行变异的有用且有效的技术。我的答案解决了为什么您不应该使用A 来突变现有集合的原因。 简短的答案是 no ,至少在一般情况下不是这样,您不应该使用a 来修改现有集合。 原因