В Java 8 мы можем использовать В Java 8 мы можем использовать
1. Поток.повторять
1.1 Поток 0 – 9
//Stream.iterate(initial value, next value) Stream.iterate(0, n -> n + 1) .limit(10) .forEach(x -> System.out.println(x));
Выход
0 1 2 3 4 5 6 7 8 9
1.2 Поток только нечетных чисел.
Stream.iterate(0, n -> n + 1) .filter(x -> x % 2 != 0) //odd .limit(10) .forEach(x -> System.out.println(x));
Выход
1 3 5 7 9 11 13 15 17 19
1.3 Классический пример Фибоначчи.
Stream.iterate(new int[]{0, 1}, n -> new int[]{n[1], n[0] + n[1]}) .limit(20) .map(n -> n[0]) .forEach(x -> System.out.println(x));
Выход
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181
1.4 Суммируйте все значения Фибоначчи.
int sum = Stream.iterate(new int[]{0, 1}, n -> new int[]{n[1], n[0] + n[1]}) .limit(10) .map(n -> n[0]) // Stream.mapToInt(n -> n) .sum(); System.out.println("Fibonacci 10 sum : " + sum);
Выход
Fibonacci 10 sum : 88
2. Ява 9
stream.iterate
был улучшен в Java 9. Он поддерживает предикат (условие) в качестве второго аргумента, и stream.iterate
остановится, если предикат является ложным.
2.1 Остановите итерацию потока, если n
Stream.iterate(1, n -> n < 20 , n -> n * 2) .forEach(x -> System.out.println(x));
Выход
1 2 4 8 16
Рекомендации
Оригинал: “https://mkyong.com/java8/java-8-stream-iterate-examples/”