java - 如何跳出Java 8 Iterator.forEachRemaining循环里面的方法?

标签 java foreach java-8 iterator return

简化代码如下。我预计迭代内的 return 会导致跳出该方法。相反,代码执行下一次迭代,然后在方法内迭代后打印

public static void callIter() {
    List<String> names = new ArrayList<>();
    names.add("A");
    names.add("B");
    names.add("C");
    ListIterator<String> nameIterator = names.listIterator();
    nameIterator.forEachRemaining(name -> {
        if (name.equals("B")) {
            System.out.println("Found");
            return;
        }
        System.out.println(name);
    });
    System.out.println("AfterIter");
}

最佳答案

return 完成为迭代器的每个(剩余)元素执行的代码的执行。它不会停止迭代/forEachRemaining 的执行。这与您描述的行为相符。

Javadoc for forEachRemaining状态:

Performs the given action for each remaining element until all elements have been processed or the action throws an exception. Actions are performed in the order of iteration, if that order is specified. Exceptions thrown by the action are relayed to the caller.

换句话说,如果您不想为此滥用异常,如果您打算在处理最后一个元素之前停止迭代,则不应使用 forEachRemaining

关于java - 如何跳出Java 8 Iterator.forEachRemaining循环里面的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48117070/

相关文章:

java - 使用 Jersey 测试 RESTful Web 服务时出现 HTTP 状态 404

vba - Excel VBA : Consolidate the iterating group in "For Each" block

java-8 - Java 8 Completable Futures 所有不同的数据类型

java - Andengine Sprite 动态Zindex

Java继承设计思想 - 求指教

MySQL : INSERT INTO with foreach like

Java 流 API : Looking for elegant way for filterAndMap

java - 为什么我不能在 Java 8 lambda 表达式中引发异常?

java - 如何修复使用参数 E e 实现方法时有关父类(super class)型的错误?

php foreach循环用几个词搜索mysql表