Stream.of
Stream<String> stream = Stream.of("Modern ", "Java ", "In ", "Action");
stream.map(String::toUpperCase)
.forEach(System.out::println);
스트림 비우기
Stream<String> emptyStream = Stream.empty();
객체로 스트림을 만드는데, 객체가 null
이면 빈 스트림으로 만들어야 한다
System.getProperty
- 제공된 키에 대응하는 속성이 없으면 null
반환
Stream<String> homeValueStream =
Stream.ofNullable(System.getProperty("home));
Arrays.stream
: 배열을 인수로 받는 정적 메서드
int[] numbers = {2, 3, 5, 1, 23, 63};
int sum = Arrays.stream(numbers).sum();
java.nio.file.Files
의 많은 정적 메서드가 스트림을 반환한다
(예) Files.lines
는 주어진 파일의 행 스트림을 문자열로 반환함
Stream.iterate
, Stream.generate
limit(n)
과 함께 사용초기값과 람다를 인수로 받아 새로운 값을 끊임없이 생산
언바운드 스트림: 요청할 때마다 값을 끝없이 생산하는 스트림
Stream.iterate(0, n -> n + 2)
.limit(10)
.forEach(System.out::println);
predicate도 지원함
filter
는 사용 불가filter
는 언제 이 작업을 중단해야 하는지 알 수 없음takeWhile
을 쓰는 것이 좋음Stream.iterate(0, n -> n < 100, n -> n + 4)
.forEach(System.out::println);
generate
iterate
과 달리 생산된 각 값을 연속적으로 계산하지는 않음Supplier<T>
를 인수로 받아 새로운 값을 생산함Stream.generate(Math::random)
.limit(5)
.forEach(System.out::println);
참고: Modern Java in Action (라울-게이브리얼 등 지음)