우선 해당 기능은 배열의 각 요소를 순회하고 입력 매개변수의 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()에는 차이가 없습니다.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!