From b52b9c91338cf9ae26601815a292dbccdd9b4682 Mon Sep 17 00:00:00 2001 From: kshokh <128833441+kshokh@users.noreply.github.com> Date: Mon, 20 Oct 2025 21:34:39 -0400 Subject: [PATCH] Lesson 8 --- .../src/main/java/lessons/lesson08/App.java | 58 +++++++++++++++++++ .../src/main/java/lessons/lesson08/Book.java | 14 +++++ .../src/main/java/lessons/lesson08/User.java | 13 +++++ 3 files changed, 85 insertions(+) create mode 100644 lessons/src/main/java/lessons/lesson08/App.java create mode 100644 lessons/src/main/java/lessons/lesson08/Book.java create mode 100644 lessons/src/main/java/lessons/lesson08/User.java diff --git a/lessons/src/main/java/lessons/lesson08/App.java b/lessons/src/main/java/lessons/lesson08/App.java new file mode 100644 index 0000000..edddb63 --- /dev/null +++ b/lessons/src/main/java/lessons/lesson08/App.java @@ -0,0 +1,58 @@ +package Lesson8; + +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +/** + * @author Shohjahon + * @version 1.0 + */ + +public class App { + public static void main(String[] args) { + Scanner scanner = new Scanner(System.in); + Queue userQueue = new LinkedList<>(); + int[] sequenceCounter = {1}; + + System.out.println("Enter user names (type 'done' to finish):"); + + Stream.generate(() -> { + System.out.print("Enter user name: "); + return scanner.nextLine().trim(); + }) + .takeWhile(name -> !name.equalsIgnoreCase("done")) + .forEach(name -> { + User user = new User(name, sequenceCounter[0]++); + userQueue.add(user); + System.out.println("Added to queue: " + user); + }); + + Optional.ofNullable(userQueue.poll()) + .ifPresentOrElse( + user -> System.out.println("Processing user: " + user), + () -> System.out.println("No users to process.") + ); + + System.out.println("\nEnter a series of numbers separated by spaces:"); + String input = scanner.nextLine(); + + Set uniqueNumbers = Arrays.stream(input.split("\\s+")) + .filter(s -> s.matches("\\d+")) + .map(Integer::parseInt) + .collect(Collectors.toCollection(LinkedHashSet::new)); + + System.out.println("Unique numbers: " + uniqueNumbers); + + Map bookMap = Stream.of( + new Book("1984", "George Orwell", "978-0451524935"), + new Book("The Odyssey", "Homer", "978-0140449266"), + new Book("To Kill a Mockingbird", "Harper Lee", "978-0061120084") + ).collect(Collectors.toMap(Book::getIsbn, b -> b)); + + System.out.println("\nBooks in library:"); + bookMap.values().forEach(System.out::println); + + scanner.close(); + } +} diff --git a/lessons/src/main/java/lessons/lesson08/Book.java b/lessons/src/main/java/lessons/lesson08/Book.java new file mode 100644 index 0000000..ae3fab5 --- /dev/null +++ b/lessons/src/main/java/lessons/lesson08/Book.java @@ -0,0 +1,14 @@ +package Lesson8; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +class Book { + private String name; + private String author; + private String isbn; +} \ No newline at end of file diff --git a/lessons/src/main/java/lessons/lesson08/User.java b/lessons/src/main/java/lessons/lesson08/User.java new file mode 100644 index 0000000..f6f7e5b --- /dev/null +++ b/lessons/src/main/java/lessons/lesson08/User.java @@ -0,0 +1,13 @@ +package Lesson8; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +class User { + private String name; + private int sequenceNumber; +} \ No newline at end of file