java - 使用 java8 流 api 为限制 10 累积查找索引
问题描述
我正在学习 java8 流 api。igot面临这个问题。这里有 9 个数字“1,2,3,4,5,6,7,8,9”。我想为 1+2+3+....+n>=10 找到 n 。如何使用 java8 流 api 查找 n?
我尝试使用for循环来查找n,代码如下:
int sum,n=0;
for(int i=0;i<arr.length;i++){
sum+=arr[i]
if(sum>=10){
n=i;
break;
}
}
解决方案
int n = IntStream.range(0, arr.length)
.filter(i -> Arrays.stream(arr).limit(i + 1).sum() >= 10)
.findFirst()
.orElse(-1);
System.out.println(n); // return 3 (1 + 2 + 3 + 4 = 10)
推荐阅读
- mysql - 解决 codeigniter 框架中的数组错误
- reactjs - 适用于 React 的 AWS Amplify 身份验证自定义 UI 已隐藏
- sql - 在 SQL 表上使用 pyspark 编写 where 查询
- c# - ASP.NET CORE 2 System.Net.Sockets.SocketException:每当上传文件时
- ruby - 当我尝试在 ruby 中复制工作表 google-api-client-0.30.2 时出现“服务器错误(Google::Apis::ServerError)”
- javascript - 渲染从 JSX 后端获取的 HTML 标记
- opengl - Vulkan 中的 OpenGL GLSL 原子计数器
- python-3.x - 通过 SQLAlchemy 方言查询 Crate 数据库:没有更多可用的服务器
- android - 仅当 ROOM 数据库中的行被删除时,如何显示 Toast?
- ios - 获取自己的蓝牙唯一 ID