더북(TheBook)

다른 단순 리덕션으로는 최댓값과 최솟값을 리턴하는 maxmin이 있다. 한 가지 얽힌 부분이 있는데, 이들 메서드는 결과를 감싸고 있거나 (스트림이 때로는 비어 있을 수 있기 때문에) 결과가 없음을 나타내는 Optional<T> 값을 리턴한다. 예전에는 이러한 상황에서 보통 널(null)을 리턴했다. 하지만 널을 리턴하면 완전히 테스트하지 못한 프로그램에서 뜻하지 않은 상황에 널 포인터 예외를 일으킬 수 있다. 자바 8에서 Optional 타입은 리턴 값이 빠진 상황을 가리킬 때 선호하는 방식이다. 다음 절에서 Optional 타입을 자세히 설명한다. 다음은 스트림의 최댓값을 얻는 방법이다.


Optional<String> largest = words.max(String::compareToIgnoreCase);

if (largest.isPresent())

System.out.println(“largest: “ + largest.get());


신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.