Koşullu Stream.iterate()
Akış biçiminde bir döngü gibi yinelemeyi durdurmak için koşul kullanın.
Kod Karşılaştırması
✕ 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
Bu kodda bir sorun mu gördünüz? Bize bildirin.
Modern yöntem neden daha iyi
Doğal sonlandırma
Keyfi bir sınır değil, bir koşula göre durun.
for döngüsü karşılığı
for(seed; hasNext; next) ile aynı anlambilim.
Sonsuz akış riski yok
Koşul, sonlandırmayı garanti eder.
Eski Yaklaşım
iterate + limit
Modern Yaklaşım
iterate(seed, pred, op)
JDK'dan itibaren
9
Zorluk
Orta
JDK Desteği
Koşullu Stream.iterate()
Mevcut
JDK 9'dan itibaren geniş çapta kullanılabilir (Eylül 2017)
Nasıl çalışır
Üç argümanlı Stream.iterate(seed, hasNext, next), bir for döngüsü gibi çalışır: seed başlangıç değeri, hasNext ne zaman duracağını belirler ve next sonraki değeri üretir.
İlgili Belgeler