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..495ce78 100644
--- a/src/main/java/dev/Main.java
+++ b/src/main/java/dev/Main.java
@@ -36,29 +36,37 @@ public class Main {
// TODO:
// Split data into 3 parts
+ int size = data.size();
+ int partSize = (int) Math.ceil(size / 3.0);
- List part1 = null;
-
- List part2 = null;
-
- List part3 = null;
+ List part1 = data.subList(0, Math.min(partSize, size));
+ List part2 = data.subList(Math.min(partSize, size), Math.min(partSize * 2, size));
+ List part3 = data.subList(Math.min(partSize * 2, size), 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()
+ t1.start();
+ t2.start();
+ t3.start();
// join()
+ t1.join();
+ t2.join();
+ t3.join();
// merge results
+ manager.addStudents(t1.getStudents());
+ manager.addStudents(t2.getStudents());
+ manager.addStudents(t3.getStudents());
+ System.out.println("Students loaded successfully.");
}
case 2 -> {
diff --git a/src/main/java/dev/model/Student.java b/src/main/java/dev/model/Student.java
index f0484f4..e84a689 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
@@ -57,14 +55,17 @@ public class Student {
// Step 1:
// Check null
+ if (obj == null || getClass() != obj.getClass()) {
+ return false;
+ }
// Step 2:
// Convert obj to Student
+ Student other = (Student) obj;
// Step 3:
// Compare IDs
-
- return false;
+ return this.id == other.id;
}
@Override
diff --git a/src/main/java/dev/service/StudentManager.java b/src/main/java/dev/service/StudentManager.java
index 403a1c6..9f62f4b 100644
--- a/src/main/java/dev/service/StudentManager.java
+++ b/src/main/java/dev/service/StudentManager.java
@@ -14,9 +14,9 @@ public class StudentManager {
// TODO:
// Merge students
-
- // Hint:
- // addAll()
+ if (newStudents != null){
+ this.students.addAll(newStudents);
+ }
}
@@ -27,7 +27,11 @@ public class StudentManager {
// Loop through students
// Compare IDs
-
+ for (Student student : students){
+ if (student.getId() == id){
+ return student;
+ }
+ }
return null;
}
@@ -38,11 +42,19 @@ public class StudentManager {
// Find student
// Remove student
-
+ for (int i = 0; i < students.size(); i++){
+ if (students.get(i).getId() == id){
+ students.remove(i);
+ return true;
+ }
+ }
return false;
}
public void printStudents() {
+ if (students.isEmpty()){
+ System.out.println("No students found.");
+ }
for (Student student : students) {
diff --git a/src/main/java/dev/thread/StudentLoader.java b/src/main/java/dev/thread/StudentLoader.java
index ab47522..b03f2d8 100644
--- a/src/main/java/dev/thread/StudentLoader.java
+++ b/src/main/java/dev/thread/StudentLoader.java
@@ -26,7 +26,6 @@ public class StudentLoader extends Thread {
public void run() {
// TODO:
-
/*
Example line:
@@ -37,17 +36,33 @@ public class StudentLoader extends Thread {
// TODO:
// split line
+ String[] parts = line.split(",");
// TODO:
// read values
+ if (parts.length == 4){
+ try {
+ 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
+ // TODO:
+ // create Student
+ Student student = new Student(id, name, major, gpa);
- // TODO:
- // add to students list
+ // TODO:
+ // add to students list
+ students.add(student);
+ }
+ catch (NumberFormatException e){
+ System.err.println("Skipping invalid line format: " + line);
+ }
+ }
}
+ // to check if threads are working
+ // System.out.println(Thread.currentThread().getName() + " -> " + lines.size());
}
diff --git a/src/main/java/dev/utils/FileManager.java b/src/main/java/dev/utils/FileManager.java
index da7f6f5..b1ab54a 100644
--- a/src/main/java/dev/utils/FileManager.java
+++ b/src/main/java/dev/utils/FileManager.java
@@ -21,6 +21,7 @@ public class FileManager {
// TODO:
// Add line to list
+ lines.add(line);
}
diff --git a/structure.txt b/structure.txt
new file mode 100644
index 0000000..8ce3c1f
Binary files /dev/null and b/structure.txt differ