> Java > java지도 시간 > Java에서 list.forEach()와 list.stream().forEach()의 차이점은 무엇입니까?

Java에서 list.forEach()와 list.stream().forEach()의 차이점은 무엇입니까?

WBOY
풀어 주다: 2023-04-24 22:07:06
앞으로
1581명이 탐색했습니다.

우선 해당 기능은 배열의 각 요소를 순회하고 입력 매개변수의 accept() 메서드를 실행하는 것이지만 일부 특정 경우에는 실행 결과가 다릅니다.

대부분의 경우 둘 다 동일한 결과를 생성하지만 약간의 미묘한 차이가 있습니다.

개요

먼저 반복 가능한 목록을 만듭니다.

List<String> list = Arrays.asList("A","B","C","D");
로그인 후 복사

가장 간단한 방법은 향상된 for 루프를 사용하는 것입니다.

for(String s : list"){
    //something
}
로그인 후 복사

기능적 Java를 사용하려면 forEach()를 사용할 수도 있습니다. 컬렉션에서 직접 이 작업을 수행할 수 있습니다:

Consumer<String> consumer = s -> {System.out::println};
list.forEach(consumer);
로그인 후 복사

또는 컬렉션 스트림에서 forEach()를 호출할 수 있습니다.

list.stream().forEach(consumer);
로그인 후 복사

두 버전 모두 목록을 반복하고 모든 요소를 ​​인쇄합니다.

ABCD ABCD

in In 이 간단한 예에서는 우리가 사용하는 forEach()에는 차이가 없습니다.

Difference

list.forEach()는 향상된 for 루프를 사용합니다

default void forEach(Consumer<? super T> action) {
      Objects.requireNonNull(action);
      for (T t : this) {
          action.accept(t);
      }
  }
로그인 후 복사

list.stream().forEach(): 먼저 컬렉션을 스트림으로 변환한 다음 컬렉션의 스트림을 반복합니다

동안 반복할 때 시간을 삭제하면 forEach는 빠르게 실패할 수 있지만 stream().forEach()는 예외를 발생시키기 전에 배열이 탐색될 때까지만 기다립니다

public class DeleteDifference {
   public static void main(String[] args) {
       List<String> list = Arrays.asList("A", "B", "C", "D");

       try {
           list.forEach(item -> {
               System.out.println(item);
               list.remove(0);
           });
       } catch (Exception e) {
           e.printStackTrace();
       }

       list.stream().forEach(item -> {
           System.out.println(item);
           list.remove(0); 
       });
   }
}
로그인 후 복사

위 내용은 Java에서 list.forEach()와 list.stream().forEach()의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿