首页 > 解决方案 > 用 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();

标签: javajava-8java-stream

解决方案


如果您使用的是 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);

推荐阅读