Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions src/com/walking/lesson52_stream_creation/task1/Main.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,38 @@
package com.walking.lesson52_stream_creation.task1;

import java.util.Random;
import java.util.Scanner;
import java.util.stream.Stream;

/**
* Реализуйте задачу 5.1 из урока 4:
* <a href="https://github.com/KFalcon2022/practical-tasks/blob/master/src/com/walking/lesson4_cycles/Task5Var1.java">...</a>
* используя Stream API.
*/
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);
}
}
17 changes: 17 additions & 0 deletions src/com/walking/lesson52_stream_creation/task2_iterate/Main.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
13 changes: 13 additions & 0 deletions src/com/walking/lesson52_stream_creation/task2_limit/Main.java
Original file line number Diff line number Diff line change
@@ -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);
}
}
22 changes: 22 additions & 0 deletions src/com/walking/lesson52_stream_creation/task3_flatMap/Main.java
Original file line number Diff line number Diff line change
@@ -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<String> из дат месяца,
* номер которого был передан параметром.
Expand All @@ -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<String> 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);
}
}
27 changes: 27 additions & 0 deletions src/com/walking/lesson52_stream_creation/task3_vars/Main.java
Original file line number Diff line number Diff line change
@@ -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<String> из дат месяца,
* номер которого был передан параметром.
Expand All @@ -9,5 +15,26 @@
*/
public class Main {
public static void main(String[] args) {
List<Stream<String>> datesOfAllMonth = new ArrayList<>(12);

IntStream.range(0, 12)
.peek(i -> datesOfAllMonth.add(getDatesOfMonth(++i)))
.mapToObj(datesOfAllMonth::get)
.reduce(Stream.empty(), Stream::concat)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Решение прикольное, но формальное условие не выполнено

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

public static Stream<String> 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);
}
}