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);
}
}
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP