diff --git a/src/com/walking/lesson52_stream_creation/task1/Main.java b/src/com/walking/lesson52_stream_creation/task1/Main.java
index 929d71670..7135e430a 100644
--- a/src/com/walking/lesson52_stream_creation/task1/Main.java
+++ b/src/com/walking/lesson52_stream_creation/task1/Main.java
@@ -1,5 +1,9 @@
package com.walking.lesson52_stream_creation.task1;
+import java.util.Random;
+import java.util.Scanner;
+import java.util.stream.Stream;
+
/**
* Реализуйте задачу 5.1 из урока 4:
* ...
@@ -7,5 +11,28 @@
*/
public class Main {
public static void main(String[] args) {
+ Random random = new Random();
+ int randomInt = random.nextInt(1, 10);
+
+ Scanner systemScanner = new Scanner(System.in);
+
+ System.out.println("Угадайте число:");
+
+ guessNumber(randomInt, systemScanner);
+ guessNumberAlternative(randomInt, systemScanner);
+ }
+
+ private static void guessNumber(int number, Scanner scanner) {
+ Stream.generate(scanner::nextInt)
+ .takeWhile(i -> i != number)
+ .forEach(s -> System.out.println("Не угадал"));
+ }
+
+ private static void guessNumberAlternative(int number, Scanner scanner) {
+ scanner.tokens()
+ .map(s -> Integer.toString(number)
+ .equals(s) ? "Угадал" : "Не угадал")
+ .peek(System.out::println)
+ .anyMatch("Угадал"::equals);
}
}
diff --git a/src/com/walking/lesson52_stream_creation/task2_iterate/Main.java b/src/com/walking/lesson52_stream_creation/task2_iterate/Main.java
index bd4a6c0d9..ce9a10cff 100644
--- a/src/com/walking/lesson52_stream_creation/task2_iterate/Main.java
+++ b/src/com/walking/lesson52_stream_creation/task2_iterate/Main.java
@@ -1,10 +1,27 @@
package com.walking.lesson52_stream_creation.task2_iterate;
+import java.time.LocalDate;
+import java.util.stream.Stream;
+
/**
* Реализуйте программу, выводящую в консоль все даты текущего месяца.
* Не используйте Stream.limit()
*/
public class Main {
public static void main(String[] args) {
+ LocalDate localDate = LocalDate.now();
+
+ Stream.iterate(localDate.withDayOfMonth(1), d -> d.plusDays(1))
+ .takeWhile(d -> d.getMonthValue() == localDate.getMonthValue())
+ .forEach(System.out::println);
+
+ Stream.iterate(1, i -> i < localDate.lengthOfMonth(), i -> ++i)
+ .map(localDate::withDayOfMonth)
+ .forEach(System.out::println);
+
+ localDate.withDayOfMonth(1)
+ .datesUntil(localDate.withDayOfMonth(1)
+ .plusMonths(1))
+ .forEach(System.out::println);
}
}
diff --git a/src/com/walking/lesson52_stream_creation/task2_limit/Main.java b/src/com/walking/lesson52_stream_creation/task2_limit/Main.java
index f903527b3..12e56fc7f 100644
--- a/src/com/walking/lesson52_stream_creation/task2_limit/Main.java
+++ b/src/com/walking/lesson52_stream_creation/task2_limit/Main.java
@@ -1,10 +1,23 @@
package com.walking.lesson52_stream_creation.task2_limit;
+import java.time.LocalDate;
+import java.util.stream.Stream;
+
/**
* Реализуйте программу, выводящую в консоль все даты текущего месяца.
* Используйте Stream.limit()
*/
public class Main {
public static void main(String[] args) {
+ LocalDate localDate = LocalDate.now();
+
+ Stream.iterate(localDate.withDayOfMonth(1), d -> d.plusDays(1))
+ .limit(localDate.lengthOfMonth())
+ .forEach(System.out::println);
+
+ Stream.iterate(1, i -> ++i)
+ .map(localDate::withDayOfMonth)
+ .limit(localDate.lengthOfMonth())
+ .forEach(System.out::println);
}
}
diff --git a/src/com/walking/lesson52_stream_creation/task3_flatMap/Main.java b/src/com/walking/lesson52_stream_creation/task3_flatMap/Main.java
index f9faa6675..29eb6aefb 100644
--- a/src/com/walking/lesson52_stream_creation/task3_flatMap/Main.java
+++ b/src/com/walking/lesson52_stream_creation/task3_flatMap/Main.java
@@ -1,5 +1,9 @@
package com.walking.lesson52_stream_creation.task3_flatMap;
+import java.time.LocalDate;
+import java.util.stream.IntStream;
+import java.util.stream.Stream;
+
/**
* Реализуйте метод, возвращающий Stream из дат месяца,
* номер которого был передан параметром.
@@ -9,5 +13,23 @@
*/
public class Main {
public static void main(String[] args) {
+ IntStream.rangeClosed(1, 12)
+ .boxed()
+ .flatMap(Main::getDatesOfMonth)
+ .forEach(System.out::println);
+ }
+
+ public static Stream getDatesOfMonth(int monthValue) {
+ if (monthValue < 1 || monthValue > 12) {
+ return Stream.empty();
+ }
+
+ LocalDate startOfCurrentMonth = LocalDate.now()
+ .withMonth(monthValue)
+ .withDayOfMonth(1);
+
+ return Stream.iterate(startOfCurrentMonth, d -> d.plusDays(1))
+ .limit(startOfCurrentMonth.lengthOfMonth())
+ .map(LocalDate::toString);
}
}
diff --git a/src/com/walking/lesson52_stream_creation/task3_vars/Main.java b/src/com/walking/lesson52_stream_creation/task3_vars/Main.java
index 992e35992..6977f8833 100644
--- a/src/com/walking/lesson52_stream_creation/task3_vars/Main.java
+++ b/src/com/walking/lesson52_stream_creation/task3_vars/Main.java
@@ -1,5 +1,11 @@
package com.walking.lesson52_stream_creation.task3_vars;
+import java.time.LocalDate;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.IntStream;
+import java.util.stream.Stream;
+
/**
* Реализуйте метод, возвращающий Stream из дат месяца,
* номер которого был передан параметром.
@@ -9,5 +15,26 @@
*/
public class Main {
public static void main(String[] args) {
+ List> datesOfAllMonth = new ArrayList<>(12);
+
+ IntStream.range(0, 12)
+ .peek(i -> datesOfAllMonth.add(getDatesOfMonth(++i)))
+ .mapToObj(datesOfAllMonth::get)
+ .reduce(Stream.empty(), Stream::concat)
+ .forEach(System.out::println);
+ }
+
+ public static Stream getDatesOfMonth(int monthValue) {
+ if (monthValue < 1 || monthValue > 12) {
+ return Stream.empty();
+ }
+
+ LocalDate startOfCurrentMonth = LocalDate.now()
+ .withMonth(monthValue)
+ .withDayOfMonth(1);
+
+ return Stream.iterate(startOfCurrentMonth, d -> d.plusDays(1))
+ .limit(startOfCurrentMonth.lengthOfMonth())
+ .map(LocalDate::toString);
}
}