Java Collection.stream().forEach()与Collection.forEach()的区别

Java Collection.stream().forEach()与Collection.forEach()的区别

Collection.forEach()和Collection.stream().forEach()用于在集合上进行迭代,两者之间没有太大的区别,因为它们都给出了相同的结果,尽管它们的内部工作有一些区别。

Collection.stream().forEach() 基本上用于在一组对象中进行迭代,将一个集合转换为流,然后在集合的流上进行迭代。在对集合进行迭代时,如果对集合进行了任何结构上的改变,那么它将抛出并发修改异常。

Collection.forEach() 使用集合的迭代器(以指定者为准)。大多数集合都不允许在迭代该集合时修改结构。如果该集合发生任何变化,例如增加一个元素或删除一个元素,那么它们将抛出并发修改错误。如果collection.forEach()是在一个同步的集合上进行迭代,那么他们将锁定集合的片段,并在所有可以对该集合进行的调用中保持它。

Collection.stream().forEach()与Collection.forEach()之间的区别

Collection.stream().forEach() Collection.forEach()
Collection.stream().forEach()也用于迭代集合,但它首先将集合转换为流,然后对集合的流进行迭代。 Collection.forEach()使用集合迭代器。
与Collection.forEach()不同,它不以任何特定的顺序执行,也就是说,没有定义顺序。 如果指定了迭代顺序,则总是按照迭代顺序执行。
在集合中的结构修改过程中,该异常将在以后被抛出。 如果我们使用collection.forEach()在集合中进行任何结构性修改,它将立即抛出一个异常。
如果迭代是在同步集合上进行的,那么它不会锁定该集合。 如果迭代发生在同步集合上,那么它将锁定该集合并在所有的调用中保持该集合。

下面是一个Java程序,展示Collection.stream.forEach()的用法。

// Java Program to show the demonstration of
// Collection.stream().forEach()
import java.io.*;
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
        List<Integer> list = new ArrayList<>();
  
        list.add(5);
        list.add(6);
        list.add(3);
        list.add(4);
        // printing each element of list using forEach loop
        list.stream().forEach(System.out::print);
    }
}

输出

5634

下面是一个Java程序,展示Collection.forEach()方法的用法。

// Java Program to show the demonstration of
// Collection.forEach()
import java.io.*;
import java.util.*;
  
class GFG {
    public static void main(String[] args)
    {
        List<Integer> list = new ArrayList<>();
  
        list.add(5);
        list.add(6);
        list.add(3);
        list.add(4);
        // printing each element of list
        list.forEach(System.out::print);
    }
}

输出

5634

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程