답변:
java.util.Arrays
배열을 Java 8 스트림으로 변환하여 합산 등에 사용할 수 있는 새로운 메소드가 추가되었습니다 .
int sum = Arrays.stream(myIntArray)
.sum();
Stream 연산과 동시에 값과 인덱스를 얻는 방법을 생각할 수 없으므로 두 배열을 곱하면 조금 더 어려워집니다. 이것은 아마도 배열의 인덱스를 통해 스트리밍해야 함을 의미합니다.
//in this example a[] and b[] are same length
int[] a = ...
int[] b = ...
int[] result = new int[a.length];
IntStream.range(0, a.length)
.forEach(i -> result[i] = a[i] * b[i]);
편집하다
Commenter @Holgermap
는 다음 forEach
과 같이 대신 메소드를 사용할 수 있다고 지적 합니다.
int[] result = IntStream.range(0, a.length).map(i -> a[i] * b[i]).toArray();
mapToInt
복싱을 피하기 위해 사용하고 싶을 수도 있습니다 .
다음을 사용하여 배열을 스트림으로 변환 할 수 있습니다 Arrays.stream()
.
int[] ns = new int[] {1,2,3,4,5};
Arrays.stream(ns);
당신이 당신의 스트림을 가지고하면, 당신은에 설명 된 방법 중 하나를 사용할 수있는 문서 와 같은, sum()
또는 무엇이든을. Lambda 함수를 사용하여 관련 스트림 메서드를 호출하여 Python에서 map
또는 filter
좋아할 수 있습니다 .
Arrays.stream(ns).map(n -> n * 2);
Arrays.stream(ns).filter(n -> n % 4 == 0);
스트림 수정이 끝나면 toArray()
다른 곳에서 사용하기 위해 스트림으로 다시 변환하여 호출 합니다.
int[] ns = new int[] {1,2,3,4,5};
int[] ms = Arrays.stream(ns).map(n -> n * 2).filter(n -> n % 4 == 0).toArray();
Arrays.stream (arr)은 Stream 대신 LongStream (또는 IntStream, ...)을 생성하므로지도 함수를 사용하여 유형을 수정할 수 없습니다. .mapToLong, mapToObject, ... 함수가 제공되는 이유입니다.
int[] result=IntStream.range(0, a.length).map( i->a[i]* b[i]).toArray();