Java 中 Collection.stream().forEach() 和 Collection.forEach() 的区别
javaobject oriented programmingprogramming
Collection.stream().forEach() 和 Collection.forEach() 都用于对集合进行迭代。
Collection.forEach() 使用集合的迭代器。大多数集合在迭代时不允许结构修改。如果在迭代过程中添加或删除任何元素,它们将立即抛出并发修改异常。如果 Collection.forEach() 正在迭代同步集合,那么它们将锁定集合的片段并在所有调用中保持它。
Collection.stream().forEach() 也用于迭代集合,但它首先将集合转换为流,然后迭代集合的流,因此处理顺序未定义。它还会抛出并发修改异常,如果在迭代它们时发生任何结构变化,它将立即抛出异常。
Sr.否。 | Key | Collection.forEach() | Collection.stream().forEach() |
---|---|---|---|
1 | Basic | Collection.forEach() 使用集合的迭代器 | Collection.stream().forEach() 也用于迭代集合,但它首先将集合转换为流,然后迭代集合的流 |
2 | 顺序 | 它始终按迭代顺序执行Iterable,如果指定了。 | 顺序未定义 |
3 | 锁定 | 如果迭代发生在同步集合上,则它会锁定集合并保持在所有调用中都执行该操作 | 它不会锁定集合 |
4. | 异常 | 如果在集合中发生任何结构修改,它将立即抛出异常collection | 稍后将抛出异常 |
示例 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); } }