From 022d8b6c7c2aa1eddefe8ad64b72ca5e287272dc Mon Sep 17 00:00:00 2001 From: ava Date: Tue, 26 May 2026 09:44:50 +0330 Subject: [PATCH] complete workshop --- .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 | 29 ++++++++++++------- src/main/java/dev/model/Student.java | 11 +++++-- src/main/java/dev/service/StudentManager.java | 16 ++++++++-- src/main/java/dev/thread/StudentLoader.java | 10 +++++-- src/main/java/dev/utils/FileManager.java | 2 +- 11 files changed, 116 insertions(+), 20 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..f24c79d --- /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..f5deedb 100644 --- a/src/main/java/dev/Main.java +++ b/src/main/java/dev/Main.java @@ -37,20 +37,17 @@ public class Main { // Split data into 3 parts - List part1 = null; - - List part2 = null; - - List part3 = null; + int size = data.size(); + int third = size / 3; + List part1 = data.subList(0, third); + List part2 = data.subList(third, third * 2); + List part3 = data.subList(third * 2, size); // TODO: - StudentLoader t1 = null; - - StudentLoader t2 = null; - - StudentLoader t3 = null; - + StudentLoader t1 = new StudentLoader(part1); + StudentLoader t2 = new StudentLoader(part2); + StudentLoader t3 = new StudentLoader(part3); // TODO: // start() @@ -58,7 +55,17 @@ public class Main { // join() // merge results + t1.start(); + t2.start(); + t3.start(); + t1.join(); + t2.join(); + t3.join(); + + manager.addStudents(t1.getStudents()); + manager.addStudents(t2.getStudents()); + manager.addStudents(t3.getStudents()); } case 2 -> { diff --git a/src/main/java/dev/model/Student.java b/src/main/java/dev/model/Student.java index f0484f4..c74e7ad 100644 --- a/src/main/java/dev/model/Student.java +++ b/src/main/java/dev/model/Student.java @@ -47,7 +47,7 @@ public class Student { // Example: // return id % 97; - return 0; + return id % 97; } @Override @@ -57,14 +57,21 @@ public class Student { // Step 1: // Check null + if (obj == null) { + return false; + } // Step 2: // Convert obj to Student + if (!(obj instanceof Student)) { + return false; + } + Student other = (Student) obj; // Step 3: // Compare IDs + return this.id == other.id; - return false; } @Override diff --git a/src/main/java/dev/service/StudentManager.java b/src/main/java/dev/service/StudentManager.java index 403a1c6..07422a9 100644 --- a/src/main/java/dev/service/StudentManager.java +++ b/src/main/java/dev/service/StudentManager.java @@ -12,12 +12,11 @@ public class StudentManager { public void addStudents(ArrayList newStudents) { // TODO: - // Merge students // Hint: // addAll() - + students.addAll(newStudents); } public Student searchStudent(int id) { @@ -27,6 +26,11 @@ public class StudentManager { // Loop through students // Compare IDs + for (Student student : students) { + if (student.getId() == id) { + return student; + } + } return null; } @@ -38,8 +42,14 @@ public class StudentManager { // Find student // Remove student - + for (Student student : students) { + if (student.getId() == id) { + students.remove(student); + return true; + } + } return false; + } public void printStudents() { diff --git a/src/main/java/dev/thread/StudentLoader.java b/src/main/java/dev/thread/StudentLoader.java index ab47522..876669f 100644 --- a/src/main/java/dev/thread/StudentLoader.java +++ b/src/main/java/dev/thread/StudentLoader.java @@ -37,15 +37,19 @@ public class StudentLoader extends Thread { // TODO: // split line - + String[] parts = line.split(","); // TODO: // read values - + int id = Integer.parseInt(parts[0].trim()); + String name = parts[1].trim(); + String major = parts[2].trim(); + double gpa = Double.parseDouble(parts[3].trim()); // TODO: // create Student - + Student student = new Student(id, name, major, gpa); // TODO: // add to students list + students.add(student); } diff --git a/src/main/java/dev/utils/FileManager.java b/src/main/java/dev/utils/FileManager.java index da7f6f5..a9f3738 100644 --- a/src/main/java/dev/utils/FileManager.java +++ b/src/main/java/dev/utils/FileManager.java @@ -21,7 +21,7 @@ public class FileManager { // TODO: // Add line to list - + lines.add(line); } reader.close();