Java8 lambda 表达式 forEach 如何提前终止?

定义了一个AtomicBoolean类型的变量found作为标志

  • 首先定义了一个AtomicBoolean类型的变量found作为标志。
  • 在Lambda表达式中,当元素为3时,我们将found标志设置为true,表示已经找到了满足条件的元素。
  • 接着,在每次迭代中,我们都会检查found标志是否已经为true。
  • 如果是,则直接返回,从而提前终止迭代。如果不是,则继续执行后续操作。
List 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);
});

为什么foreach使用return语句无法生效?

  • 在Lambda表达式中,使用return语句无法生效的原因是,Lambda表达式本身并不是一个独立的代码块,它是一个函数式接口的实现。
  • 在Lambda表达式中使用return语句只会返回当前Lambda表达式的执行结果,而不会影响forEach方法的迭代过程。
  • 因此,如果希望在Lambda表达式中提前终止迭代,必须使用其他的方式来实现。


参考:https://blog.csdn.net/Dark_orange/article/details/131570012

你可能感兴趣的:(Java,forEach提前终止)