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

更新时间: 2020年1月21日

768 次查看

开启你的职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.