- 首先定义了一个AtomicBoolean类型的变量found作为标志。
- 在Lambda表达式中,当元素为3时,我们将found标志设置为true,表示已经找到了满足条件的元素。
- 接着,在每次迭代中,我们都会检查found标志是否已经为true。
- 如果是,则直接返回,从而提前终止迭代。如果不是,则继续执行后续操作。
- List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
- AtomicBoolean found = new AtomicBoolean(false);
- list.forEach(i -> {
- if (i == 3) {
- found.set(true);
- }
- if (found.get()) {
- return;
- }
- System.out.println(i);
- });
- 在Lambda表达式中,使用return语句无法生效的原因是,Lambda表达式本身并不是一个独立的代码块,它是一个函数式接口的实现。
- 在Lambda表达式中使用return语句只会返回当前Lambda表达式的执行结果,而不会影响forEach方法的迭代过程。
- 因此,如果希望在Lambda表达式中提前终止迭代,必须使用其他的方式来实现。
参考:https://blog.csdn.net/Dark_orange/article/details/131570012