Java中Collection.stream().forEach()和Collection.forEach()的区别
Collection.stream().forEach() 和 Collection.forEach() 都用于迭代集合。
Collection.forEach() 使用集合的迭代器。大多数集合在迭代期间不允许结构性修改。如果在迭代期间添加或删除任何元素,它们将立即抛出并发修改异常。如果 Collection.forEach() 正在迭代同步集合,则它们将锁定集合的片段并在所有调用中保持锁定。
Collection.stream().forEach() 也用于迭代集合,但它首先将集合转换为流,然后迭代集合的流,因此处理顺序是不确定的。如果在迭代期间发生任何结构性更改,它也会抛出并发修改异常,它将立即抛出异常。
| 序号 | 关键 | Collection.forEach() | Collection.stream().forEach() |
|---|---|---|---|
1 | 基础 | Collection.forEach() 使用集合的迭代器 | Collection.stream().forEach() 也用于迭代集合,但它首先将集合转换为流,然后迭代集合的流 |
2 | 顺序 | 始终按照Iterable的迭代顺序执行,如果指定了迭代顺序。 | 顺序未定义 |
3 | 锁定 | 如果迭代发生在同步集合上,则它会锁定集合并在所有调用中保持锁定 | 它不会锁定集合 |
4. | 异常 | 如果集合中发生任何结构性修改,它将立即抛出异常 | 异常将在稍后抛出 |
Collection.stream().forEach示例
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List list= new ArrayList();
list.add("Ram");
list.add("TutorialPoints");
list.stream().forEach(System.out::print);
}
}Collection.forEach示例
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
List list= new ArrayList();
list.add("Ram");
list.add("TutorialPoints");
list.forEach(System.out::print);
}
}
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP