java forEach()和forEachRemain()的区别
时间: 2023-06-27 10:07:33 浏览: 103
Java中的迭代器和foreach原理
在Java中,`forEach()`和`forEachRemaining()`都是用于迭代集合元素的方法,但它们之间有一些区别。
`forEach()`方法将指定的操作应用于集合中的每个元素,直到所有元素都已被处理或操作引发异常为止。该方法接受一个Lambda表达式,可以使用这个表达式来定义要对每个元素执行的操作。使用`forEach()`方法时,如果在操作期间发生异常,则该异常会被捕获并包装成`ConcurrentModificationException`抛出。
示例代码:
```
List<String> list = Arrays.asList("Apple", "Banana", "Orange");
list.forEach(item -> System.out.println(item));
```
`forEachRemaining()`方法是`Iterator`接口的方法,也可用于迭代集合元素。该方法将指定的操作应用于迭代器中剩余的元素,直到所有元素都已被处理或操作引发异常为止。在迭代过程中使用`forEachRemaining()`方法遇到异常时,异常直接被抛出。如果在调用`forEachRemaining()`方法之前调用了迭代器的`remove()`方法,则会抛出`IllegalStateException`异常。
示例代码:
```
List<String> list = Arrays.asList("Apple", "Banana", "Orange");
Iterator<String> iterator = list.iterator();
iterator.next();
iterator.forEachRemaining(item -> System.out.println(item));
```
总的来说,`forEach()`方法是在集合上执行的,而`forEachRemaining()`方法是在迭代器上执行的。`forEach()`方法可以使用Lambda表达式,而`forEachRemaining()`方法只能使用Consumer接口。
阅读全文