>Java >java지도 시간 >요소 스트림에서 연속적인 쌍을 효율적으로 생성할 수 있는 방법은 무엇입니까?

요소 스트림에서 연속적인 쌍을 효율적으로 생성할 수 있는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-15 12:54:25872검색

How Can We Efficiently Generate Successive Pairs from a Stream of Elements?

스트림의 연속 쌍

주어진 기본 요소 또는 {0, 1, 2, 3, 4}와 같은 객체의 스트림을 어떻게 쉽게 변환할 수 있습니까? 아래 그림과 같이 연속적인 쌍이 있습니까?

{new Pair(0, 1), new Pair(1, 2), new Pair(2, 3), new Pair(3, 4)}

솔루션

Java 8 스트림 라이브러리는 병렬 처리를 위해 스트림을 관리 가능한 덩어리로 나누는 데 탁월하지만 상태 저장 파이프라인 단계에서는 문제를 제기합니다. 현재 스트림 요소의 인덱스를 검색하거나 인접한 요소에 액세스하는 것은 상당한 제한 사항입니다.

이러한 제약 조건을 우회하기 위해 우리는 인덱스를 활용하여 스트림을 구동하는 기술을 사용하는 경우가 많습니다. 다음은 이 접근 방식으로 쌍을 생성할 수 있는 방법을 간략하게 보여줍니다.

코드 조각:

    IntStream.range(1, arrayList.size())
             .mapToObj(i -> new Pair(arrayList.get(i-1), arrayList.get(i)))
             .forEach(System.out::println);

해결 방법 설명:

이 예에서는 1부터 시작하는 인덱스로 ArrayList를 반복하여 다음을 보장합니다. 모든 인덱스 i에 대해 arrayList.get(i-1)과 arrayList.get(i)에 모두 액세스할 수 있습니다. 코드의 핵심은 각 인덱스를 인접한 요소를 포함하는 쌍으로 변환하는 mapToObj 함수입니다.

제한 사항 및 확장:

이 접근 방식은 다음과 같은 경우에 효과적입니다. 무작위 액세스 컬렉션에 저장된 유한 스트림은 무한 스트림에 적용할 수 없습니다. 그러나 파이프라인을 병렬로 실행하여 성능상의 이점을 제공할 수 있습니다.

위 내용은 요소 스트림에서 연속적인 쌍을 효율적으로 생성할 수 있는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.