From e50d72224260a455ee406192b27982d7895b8559 Mon Sep 17 00:00:00 2001 From: Arshida_0 Date: Mon, 25 May 2026 17:06:40 +0430 Subject: [PATCH] WS 07 --- .idea/.gitignore | 10 ++++ .idea/compiler.xml | 13 +++++ .idea/encodings.xml | 7 +++ .idea/jarRepositories.xml | 20 ++++++++ .idea/misc.xml | 12 +++++ .idea/vcs.xml | 6 +++ src/main/java/dev/Main.java | 49 ++++++++++++++++--- src/main/java/dev/model/Student.java | 10 ++-- src/main/java/dev/service/StudentManager.java | 15 ++++++ src/main/java/dev/thread/StudentLoader.java | 15 ++++++ src/main/java/dev/utils/FileManager.java | 2 + 11 files changed, 148 insertions(+), 11 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..ab1f416 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..a590144 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..4158879 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..eba6e1f --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,12 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/src/main/java/dev/Main.java b/src/main/java/dev/Main.java index 19ca657..a604e92 100644 --- a/src/main/java/dev/Main.java +++ b/src/main/java/dev/Main.java @@ -1,9 +1,11 @@ package dev; +import dev.model.Student; import dev.service.StudentManager; import dev.thread.StudentLoader; import dev.utils.FileManager; +import java.util.ArrayList; import java.util.List; import java.util.Scanner; @@ -37,28 +39,56 @@ public class Main { // Split data into 3 parts - List part1 = null; + int sp1; + switch (data.size() % 3) { + case 1: { + sp1 = (data.size()-1)/3; + break; + } + case 2: { + sp1 = (data.size()-2)/3; + break; + } + default: { + sp1 = data.size()/3; + break; + } + } + int sp2 = sp1 * 2; - List part2 = null; + List part1 = data.subList(0, sp1); - List part3 = null; + List part2 = data.subList(sp1, sp2); + + List part3 = data.subList(sp2, data.size()); // TODO: - StudentLoader t1 = null; + StudentLoader t1 = new StudentLoader(part1); - StudentLoader t2 = null; + StudentLoader t2 = new StudentLoader(part2); - StudentLoader t3 = null; + StudentLoader t3 = new StudentLoader(part3); // TODO: // start() + t3.start(); + t2.start(); + t1.start(); + // join() + t3.join(); + t2.join(); + t1.join(); + // merge results + manager.addStudents(t1.getStudents()); + manager.addStudents(t2.getStudents()); + manager.addStudents(t3.getStudents()); } case 2 -> { @@ -79,7 +109,12 @@ public class Main { boolean removed = manager.removeStudent(id); - System.out.println(removed); + String res = "The student with id: " + id; + + if (removed) res += "is removed successfully. "; + else res += "is not found. "; + + System.out.println(res); } diff --git a/src/main/java/dev/model/Student.java b/src/main/java/dev/model/Student.java index f0484f4..d32046b 100644 --- a/src/main/java/dev/model/Student.java +++ b/src/main/java/dev/model/Student.java @@ -45,9 +45,7 @@ public class Student { // Return custom hash // Example: - // return id % 97; - - return 0; + return id % 97; } @Override @@ -64,7 +62,11 @@ public class Student { // Step 3: // Compare IDs - return false; + if (obj == this) return true; + if (obj == null || obj.getClass() != getClass()) return false; + + Student student = (Student) obj; + return student.getId() == id; } @Override diff --git a/src/main/java/dev/service/StudentManager.java b/src/main/java/dev/service/StudentManager.java index 403a1c6..0fe39ee 100644 --- a/src/main/java/dev/service/StudentManager.java +++ b/src/main/java/dev/service/StudentManager.java @@ -2,6 +2,7 @@ package dev.service; import dev.model.Student; +import java.sql.Struct; import java.util.ArrayList; @@ -18,6 +19,7 @@ public class StudentManager { // Hint: // addAll() + students.addAll(newStudents); } public Student searchStudent(int id) { @@ -28,6 +30,12 @@ public class StudentManager { // Compare IDs + for (Student student : students) { + if (student.getId() == id) { + return student; + } + } + return null; } @@ -39,6 +47,13 @@ public class StudentManager { // Remove student + for (Student student : students) { + if (student.getId() == id) { + students.remove(student); + return true; + } + } + return false; } diff --git a/src/main/java/dev/thread/StudentLoader.java b/src/main/java/dev/thread/StudentLoader.java index ab47522..6e363fc 100644 --- a/src/main/java/dev/thread/StudentLoader.java +++ b/src/main/java/dev/thread/StudentLoader.java @@ -47,6 +47,21 @@ public class StudentLoader extends Thread { // TODO: // add to students list + String[] data = line.split(","); + + try { + int id = Integer.parseInt(data[0]); + String name = data[1]; + String major = data[2]; + double gpa = Double.parseDouble(data[3]); + + Student student = new Student(id, name, major, gpa); + + students.add(student); + } + catch (Exception e) { + //... + } } } diff --git a/src/main/java/dev/utils/FileManager.java b/src/main/java/dev/utils/FileManager.java index da7f6f5..be75f53 100644 --- a/src/main/java/dev/utils/FileManager.java +++ b/src/main/java/dev/utils/FileManager.java @@ -22,6 +22,8 @@ public class FileManager { // Add line to list + lines.add(line); + } reader.close();