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.