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);
   }
}

相关文章