Computer >> 컴퓨터 >  >> 프로그램 작성 >> Java

Java에서 Collection.stream().forEach()와 Collection.forEach()의 차이점

<시간/>

Collection.stream().forEach() 및 Collection.forEach()는 모두 컬렉션을 반복하는 데 사용됩니다.

Collection.forEach()는 컬렉션의 반복자를 사용합니다. 대부분의 컬렉션은 반복하는 동안 구조적 수정을 허용하지 않습니다. 요소가 반복 중에 추가 또는 제거되면 즉시 동시 수정 예외가 발생합니다. Collection.forEach()가 동기화된 컬렉션을 반복하는 경우 컬렉션의 세그먼트를 잠그고 모든 호출에서 유지합니다.

Collection.stream().forEach()는 컬렉션을 반복하는 데도 사용되지만 먼저 컬렉션을 스트림으로 변환한 다음 컬렉션의 스트림을 반복하므로 처리 순서가 정의되지 않습니다. 또한 동시 수정 예외가 발생합니다. 반복하는 동안 구조적 변경이 발생하면 즉시 예외가 발생합니다.

Sr. 아니요.

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