Streams 중급

조건자가 있는 Stream.iterate()

반복을 중지하기 위해 조건자를 사용합니다 — 스트림 형태의 for 루프.

✕ Java 8
Stream.iterate(1, n -> n * 2)
    .limit(10)
    .forEach(System.out::println);
// can't stop at a condition
✓ Java 9+
Stream.iterate(
    1,
    n -> n < 1000,
    n -> n * 2
).forEach(IO::println);
// stops when n >= 1000
이 코드에 문제가 있나요? 알려주세요.
🎯

자연스러운 종료

임의의 제한 대신 조건에 따라 중지합니다.

📐

for 루프 동등물

for(seed; hasNext; next)와 동일한 의미론.

🛡️

무한 스트림 위험 없음

조건자가 종료를 보장합니다.

이전 방식
iterate + limit
모던 방식
iterate(시드, 조건자, 연산)
JDK 버전
9
난이도
중급
조건자가 있는 Stream.iterate()
사용 가능

JDK 9 (2017년 9월) 이후 널리 사용 가능

세 인수 Stream.iterate(seed, hasNext, next)는 for 루프처럼 작동합니다. hasNext 조건자가 false를 반환할 때 스트림이 종료됩니다.

공유 𝕏 🦋 in