简化代码如下。我预计迭代内的 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/