java - 函数式编程/流练习
问题描述
编写一个名为 davidist 的方法,该方法返回一个
Optional<Float>
结果并具有 3 个参数:
- a Stream s(浮点型)
- 浮点类型元素的谓词 p
- 浮点型元素的二元运算符
方法从流中选择 p 为真的元素并返回:如果有多个元素,则在 p 为真的元素之间应用二元运算符的结果(即 a1 c a2 c a3 c a4 c),否则返回 Optional.empty()。
这是我到目前为止所做的,有人可以帮助我吗?
public Optional<Float> davidist(Stream<Float> s, Predicate<Float> p, byte b) {
if () {
} else {
return Optional.empty();
}
}
解决方案
以下方法是您正在寻找的方法:
public Optional<Float> davidist(
Stream<Float> stream, Predicate<Float> tester, BinaryOperator<Float> op) {
return stream // Elements stream
.filter(tester) // Stream of elements that passed 'tester' test
.reduce(op); // Optional<Float> resulting by reducing elements using 'op'
}
希望这可以帮助。
推荐阅读
- angularjs - Angular `location.path` 中的`location` 返回一个空白字符串
- python - 在计时子进程调用时在有限循环中运行 timeit 会导致无限循环卡在第一个循环参数上
- python - SQL INSERT ERROR -117:值的数量不等于列的数量
- javascript - 为视频网站创建第一次 chrome 扩展以删除广告(使用按 ID 获取元素来删除类)
- string - LUA 脚本,有人可以帮忙吗?有条件的
- regex - 正则表达式 - 移动验证
- visual-studio-code - 如何在 Nrwl - Fullstack Nest+angular 应用程序中使用 watch 配置 VS 代码调试器?
- java - java 7 for 循环到 java 8 IntStream forEach
- python - 为什么我的矩形不绘制?- python和pygame
- python - 如何从文本文件中删除特定行?