: 당신이 javadoc 보면, 심지어는 상응하는 코드를 보여줍니다 (선택 사양)가 감소
으로의 결과를 설명 javadoc에 해당하는 코드는 다음과 같습니다.
boolean foundAny = false;
T result = null;
for (T element : this stream) {
if (!foundAny) {
foundAny = true;
result = element;
}
else
result = accumulator.apply(result, element);
}
return foundAny ? Optional.of(result) : Optional.empty();
3 건 :
- 스트림 없음 요소 : Optional.empty를 반환()
- 한 요소 : 방금 전혀 축적을 적용하지 않고 요소를 돌려줍니다.
- 두 개 이상의 요소 : 모두에 누적기를 적용하고 결과를 반환합니다. 이 저감 방법
추가 예 :
// Example 1: No element
Integer[] num = {};
Optional<Integer> result = Arrays.stream(num).reduce((Integer a, Integer b) -> a + b);
System.out.println("Result: " + result.isPresent()); // Result: false
result = Arrays.stream(num).reduce((Integer a, Integer b) -> a * b);
System.out.println("Result: " + result.isPresent()); // Result: false
// Example 2: one element
int sum = Stream.of(2).reduce((Integer a, Integer b) -> a + b).get();
System.out.println("Sum: " + sum); // Sum: 2
int product = Stream.of(2).reduce((Integer a, Integer b) -> a * b).get();
System.out.println("Product: " + product); // Product: 2
// Example 3: two elements
sum = Stream.of(2, 3).reduce((Integer a, Integer b) -> a + b).get();
System.out.println("Sum: " + sum); // Sum: 5
product = Stream.of(2, 3).reduce((Integer a, Integer b) -> a * b).get();
System.out.println("Product: " + product); // Product: 6