java - 用 Java 流和 lambda 表达式替换 while 循环
问题描述
我想用 Java 流和 lambda 表达式用中断条件替换以下内容。我无法找到解决办法。我使用 Java 8。
假设输入 Arraylist(result) 是否具有排序值:[1,2,3,4,5,10,12,30,40,50]
输出应包含值[1,2,3,4,5,10]
List<String> finalResult = new ArrayList();
while (index < maxSize) {
if (inputList.get(index) > 10)) {
finalResult.add(inputList.get(index));
} else {
break;
}
index++;
}
如果我尝试使用 findFirst() 来打破条件,那么我将无法收集列表。
Optional<String> result =
inputList.stream().filter(obj -> some_condition_met).findFirst();
解决方案
如果您使用的是 java 9,则可能是您正在寻找的东西:
List<Integer> myList = List.of(1,2,3,4,5,10,12,30,40,50);
List<Integer> under5 = myList.stream()
.takeWhile(i -> i <= 5)
.collect(Collectors.toList());
System.out.println(under5);
推荐阅读
- javascript - 无法在 Docker 容器内运行 JavaScript 测试
- c# - 泛型:在泛型方法上使用约束“where T:class”访问对象属性
- android - React native 中的 Json Parser 错误
- sql - 将两个最大日期与 Oracle SQL 中的条件进行比较
- reactjs - moct store Mocha Enzyme 的测试无效
- c# - 检索图像时出现“参数无效”错误
- java - Spring (5.0.8) 事务和 jdbcTemplate
- c# - 如何以编程方式定义 PowerPoint 图表的“数据标签”状态?
- python - Python C-API 模块初始化处理程序,Py_AtExit 的补充
- flutter - 如何生成动画
飘飘然