`iterate` 및 `generate`는 람다식을 사용하여 연속된 요소를 생성하는 데 사용되며,
주로 무한한 스트림을 생성할 때 유용하다.
`iterate`는 이전 요소에 의존하여 스트림을 생성하는 반면,
`generate`는 이전 요소의 결과를 이용해서 다음요소를 계산하지않는다.
iterate
주어진 초기 값부터 시작하여 람다식을 반복적으로 적용하여 스트림을 생성
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
// 초기 값이 2이고, 각 요소는 이전 요소에 2를 곱한 값인 스트림을 생성
Stream.iterate(2, n -> n * 2)
.limit(5) // 처음 5개의 요소만 출력
.forEach(System.out::println);
}
}
[출력결과]
2
4
8
16
32
generate
람다식을 반복적으로 적용하여 스트림을 생성하지만, 이전 요소에 의존하지 않는다.
import java.util.Random;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
// 임의의 정수를 생성하여 무한한 스트림을 생성
Stream.generate(() -> new Random().nextInt(100))
.limit(5) // 처음 5개의 요소만 출력
.forEach(System.out::println);
}
}
[출력결과]
(실행할 때마다 다를 수 있음)
46
91
17
72
58
'JAVA' 카테고리의 다른 글
Optional 객체가 값이 없을경우 대체값을 설정하기: orElse() orElseThrow() (0) | 2024.03.12 |
---|---|
두 개의 스트림 합치기 concat() (0) | 2024.03.05 |
스트림 임의의 수 만들기 ints() longs() doubles() (0) | 2024.03.05 |
스트림 특정범위의 정수만들기 range() rangeClosed() (0) | 2024.03.05 |
스트림의 연산 - 최종연산 forEach forEachOrdered count max min findANy findFirst allMatch anyMatch noneMatch toArray reduce collect (0) | 2024.03.05 |