---
title: 'Stream iterate(…)-Methoden'
url: 'https://www.tutego.de/blog/javainsel/2017/02/stream-iterate-methoden'
markdown: 'https://www.tutego.de/blog/javainsel/2017/02/stream-iterate-methoden.md'
date: '2017-02-23'
description: 'Die zwei statischen iterate(…)-Methoden generieren einen Stream aus einem Startwert und einer Funktion, die das nächste Element produziert. Bei iterate(T seed, UnaryOperator<T> f) ist der Strom unendlich, bei der zweiten – in Java 9 hinzugekommenen Methode – iterate(…, Predicate<? super T&…'
taxonomy:
  category:
    - Allgemein
    - Insel
    - 'Java 8'
    - 'Java 9'
---

# Stream iterate(…)-Methoden

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://www.tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://www.tutego.de/blog/javainsel/)

## Stream iterate(…)-Methoden

23.02.2017 · [Christian Ullenboom](https://www.tutego.de/blog/javainsel/author/admin/)

Die zwei statischen `iterate(…)`-Methoden generieren einen `Stream` aus einem Startwert und einer Funktion, die das nächste Element produziert. Bei iterate(T seed, UnaryOperator<T> f) ist der Strom unendlich, bei der zweiten – in Java 9 hinzugekommenen Methode – iterate(…, `Predicate`<? super T> `hasNext`, …)-Methode beendet ein erfülltes Prädikat den Strom und erinnert an eine klassische for-Schleife. Der Abbruch über ein Prädikat ist sehr flexibel, denn bei der ersten `iterate(…)`-Methode ist das Stoppen immer ein Problem und so folgt oftmals ein `limit(…)` oder `takeWhile(…)` zum Limitieren der Elemente.

Beispiele

Produziere Permutationen eines Strings.

```java
UnaryOperator shuffleOp = s -> {

  char[] chars = s.toCharArray();

  for ( int index = chars.length - 1; index > 0; index-- ) {

    int rndIndex = ThreadLocalRandom.current().nextInt( index + 1 );

    if ( index == rndIndex ) continue;

    char c = chars[ rndIndex ];

    chars[ rndIndex ] = chars[ index ];

    chars[ index ] = c;

  }

  return new String( chars );

};

String text = "Sie müssen nur den Nippel durch die Lasche ziehn";

Stream.iterate( text, shuffleOp ).limit( 10 ).forEach( System.out::println );
```

Erzeuge einen `BigInteger`-`Stream` ab 10 Millionen alle Zahlen aus, bis mit hoher Wahrscheinlichkeit eine Zufallszahlen erscheint.

```java
Predicate isNotPrime = i -> ! i.isProbablePrime( 10 );

UnaryOperator incBigInt = i -> i.add( BigInteger.ONE );

Stream.iterate( BigInteger.valueOf( 10_000_000 ), isNotPrime, incBigInt )

      .forEach( System.out::println );
```

Kategorien: [Allgemein](https://www.tutego.de/blog/javainsel/category/allgemein/), [Insel](https://www.tutego.de/blog/javainsel/category/insel/), [Java 8](https://www.tutego.de/blog/javainsel/category/java-8/), [Java 9](https://www.tutego.de/blog/javainsel/category/java-9/)

[← Alle Beiträge](https://www.tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Präfix-Operation der Stream-API](https://www.tutego.de/blog/javainsel/2017/02/praefix-operation-der-stream-api.md)
- Next: [Die Schnittstelle Checksum](https://www.tutego.de/blog/javainsel/2017/02/die-schnittstelle-checksum.md)
