diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..639900d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..36099c1
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1760186764962
+
+
+ 1760186764962
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/lessons/lesson08/book/Book.java b/src/main/java/lessons/lesson08/book/Book.java
new file mode 100644
index 0000000..c49a200
--- /dev/null
+++ b/src/main/java/lessons/lesson08/book/Book.java
@@ -0,0 +1,16 @@
+package lessons.lesson08.book;
+
+public class Book {
+ String title, author, isbn;
+
+ Book(String title, String author, String isbn) {
+ this.title = title;
+ this.author = author;
+ this.isbn = isbn;
+ }
+
+ @Override
+ public String toString() {
+ return "ISBN: " + isbn + ", Title: " + title + ", Author: " + author;
+ }
+}
diff --git a/src/main/java/lessons/lesson08/book/Main.java b/src/main/java/lessons/lesson08/book/Main.java
new file mode 100644
index 0000000..1b9f5b2
--- /dev/null
+++ b/src/main/java/lessons/lesson08/book/Main.java
@@ -0,0 +1,18 @@
+package lessons.lesson08.book;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class Main {
+ public static void main(String[] args) {
+ Map books = new HashMap<>();
+ books.put("978-1-23456-789-7", new Book("Effective Java", "Joshua Bloch", "978-1-23456-789-7"));
+ books.put("978-0-98765-432-1", new Book("Clean Code", "Robert C. Martin", "978-0-98765-432-1"));
+ books.put("978-0-12345-678-9", new Book("Java: The Complete Reference", "Herbert Schildt", "978-0-12345-678-9"));
+
+ System.out.println("Books list:");
+ for (Book b : books.values()) {
+ System.out.println(b);
+ }
+ }
+}
diff --git a/src/main/java/lessons/lesson08/numbers/Main.java b/src/main/java/lessons/lesson08/numbers/Main.java
new file mode 100644
index 0000000..115ef5e
--- /dev/null
+++ b/src/main/java/lessons/lesson08/numbers/Main.java
@@ -0,0 +1,38 @@
+package lessons.lesson08.numbers;
+
+import java.util.*;
+
+public class Main {
+ public static void main(String[] args) {
+ Scanner sc = new Scanner(System.in);
+ System.out.println("Input numbers by tab (example: 1 2 3 45 5)");
+ System.out.print("Numbers: ");
+ String line = sc.nextLine().trim();
+ if (line.isEmpty()) {
+ System.out.println("Exit.");
+ sc.close();
+ return;
+ }
+ String[] tokens = line.split("\\s+");
+ Set unique = new LinkedHashSet<>();
+ for (String t : tokens) {
+ try {
+ unique.add(Integer.parseInt(t));
+ } catch (NumberFormatException ignored) {
+ }
+ }
+ if (unique.isEmpty()) {
+ System.out.println("No valid numbers found");
+ } else {
+ System.out.print("Unique numbers: ");
+ boolean first = true;
+ for (int n : unique) {
+ if (!first) System.out.print(" ");
+ System.out.print(n);
+ first = false;
+ }
+ System.out.println();
+ }
+ sc.close();
+ }
+}
diff --git a/src/main/java/lessons/lesson08/queue/ElectronicQueue.java b/src/main/java/lessons/lesson08/queue/ElectronicQueue.java
new file mode 100644
index 0000000..2336b7a
--- /dev/null
+++ b/src/main/java/lessons/lesson08/queue/ElectronicQueue.java
@@ -0,0 +1,23 @@
+package lessons.lesson08.queue;
+
+import java.util.ArrayDeque;
+import java.util.Queue;
+
+public class ElectronicQueue {
+ private Queue queue = new ArrayDeque<>();
+ private int nextTicket = 1;
+
+ public User register(String name) {
+ User u = new User(name, nextTicket++);
+ queue.add(u);
+ return u;
+ }
+
+ public User processNext() {
+ return queue.poll();
+ }
+
+ public User peek() {
+ return queue.peek();
+ }
+}
diff --git a/src/main/java/lessons/lesson08/queue/QueeMain.java b/src/main/java/lessons/lesson08/queue/QueeMain.java
new file mode 100644
index 0000000..827f423
--- /dev/null
+++ b/src/main/java/lessons/lesson08/queue/QueeMain.java
@@ -0,0 +1,62 @@
+package lessons.lesson08.queue;
+
+import java.util.*;
+
+public class QueeMain {
+ public static void main(String[] args) {
+ Scanner sc = new Scanner(System.in);
+ ElectronicQueue eq = new ElectronicQueue();
+
+ System.out.println("Commands: register \"name\" | process | peek | exit");
+
+ while (true) {
+ System.out.print("Operation: ");
+ String line = sc.nextLine();
+ if (line == null) break;
+ line = line.trim();
+ if (line.isEmpty()) continue;
+
+ // выход
+ if (line.equalsIgnoreCase("exit")) {
+ System.out.println("Exit.");
+ break;
+ }
+
+ // регистрация
+ if (line.toLowerCase().startsWith("register")) {
+ String name = "";
+ if (line.length() > 8) name = line.substring(8).trim();
+ // спрашиваем имя, если через команду не было написано
+ if (name.isEmpty()) {
+ System.out.print("Name: ");
+ name = sc.nextLine().trim();
+ }
+ if (name.isEmpty()) {
+ System.out.println("Name is empty. Cancel");
+ continue;
+ }
+ User u = eq.register(name);
+ System.out.println("Ticket " + u.ticket + " assigned to " + u.name);
+ continue;
+ }
+
+ if (line.equalsIgnoreCase("process")) {
+ User u = eq.processNext();
+ if (u == null) System.out.println("Queue is empty");
+ else System.out.println("Processing " + u);
+ continue;
+ }
+
+ if (line.equalsIgnoreCase("peek")) {
+ User u = eq.peek();
+ if (u == null) System.out.println("Queue is empty");
+ else System.out.println("Next: " + u);
+ continue;
+ }
+ // неизвестная команда
+ System.out.println("Unknown. Available: register, process, peek, exit");
+ }
+ sc.close();
+ }
+}
+
diff --git a/src/main/java/lessons/lesson08/queue/User.java b/src/main/java/lessons/lesson08/queue/User.java
new file mode 100644
index 0000000..b7570c4
--- /dev/null
+++ b/src/main/java/lessons/lesson08/queue/User.java
@@ -0,0 +1,16 @@
+package lessons.lesson08.queue;
+
+public class User {
+ String name;
+ int ticket;
+
+ User(String name, int ticket) {
+ this.name = name;
+ this.ticket = ticket;
+ }
+
+ @Override
+ public String toString() {
+ return "Ticket " + ticket + ": " + name;
+ }
+}