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..712ab9d
--- /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/.idea/.gitignore b/src/main/java/.idea/.gitignore
new file mode 100644
index 0000000..ab1f416
--- /dev/null
+++ b/src/main/java/.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/src/main/java/.idea/.name b/src/main/java/.idea/.name
new file mode 100644
index 0000000..002da1d
--- /dev/null
+++ b/src/main/java/.idea/.name
@@ -0,0 +1 @@
+Main.java
\ No newline at end of file
diff --git a/src/main/java/.idea/java.iml b/src/main/java/.idea/java.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/src/main/java/.idea/java.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/.idea/modules.xml b/src/main/java/.idea/modules.xml
new file mode 100644
index 0000000..a127731
--- /dev/null
+++ b/src/main/java/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/.idea/vcs.xml b/src/main/java/.idea/vcs.xml
new file mode 100644
index 0000000..c2365ab
--- /dev/null
+++ b/src/main/java/.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..023bf58 100644
--- a/src/main/java/dev/Main.java
+++ b/src/main/java/dev/Main.java
@@ -1,4 +1,8 @@
package dev;
+/**
+ * @Author Hesam Ghazi
+ * Student Number: 403222015
+ */
import dev.service.StudentManager;
import dev.thread.StudentLoader;
@@ -33,32 +37,33 @@ public class Main {
List data = FileManager.loadStudents("students.txt");
- // TODO:
+ int size = data.size();
- // Split data into 3 parts
+ int partSize = size / 3;
- List part1 = null;
+ List part1 = data.subList(0, partSize);
- List part2 = null;
+ List part2 = data.subList(partSize, partSize * 2);
- List part3 = null;
+ List part3 = data.subList(partSize * 2, size);
- // TODO:
+ StudentLoader t1 = new StudentLoader(part1);
+ StudentLoader t2 = new StudentLoader(part2);
+ StudentLoader t3 = new StudentLoader(part3);
- StudentLoader t1 = null;
+ t1.start();
+ t2.start();
+ t3.start();
- StudentLoader t2 = null;
+ t1.join();
+ t2.join();
+ t3.join();
- StudentLoader t3 = null;
-
- // TODO:
-
- // start()
-
- // 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..fb52df8 100644
--- a/src/main/java/dev/model/Student.java
+++ b/src/main/java/dev/model/Student.java
@@ -40,36 +40,24 @@ public class Student {
@Override
public int hashCode() {
-
- // TODO:
- // Return custom hash
-
- // Example:
- // return id % 97;
-
- return 0;
+ return id % 97;
}
-
@Override
public boolean equals(Object obj) {
- // TODO:
+ if (obj == null)
+ return false;
- // Step 1:
- // Check null
+ if (!(obj instanceof Student))
+ return false;
- // Step 2:
- // Convert obj to Student
+ Student other = (Student) obj;
- // Step 3:
- // Compare IDs
-
- return false;
+ return this.id == other.id;
}
@Override
public String toString() {
-
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
@@ -77,5 +65,4 @@ public class Student {
", gpa=" + gpa +
'}';
}
-
}
\ No newline at end of file
diff --git a/src/main/java/dev/service/StudentManager.java b/src/main/java/dev/service/StudentManager.java
index 403a1c6..fb7a777 100644
--- a/src/main/java/dev/service/StudentManager.java
+++ b/src/main/java/dev/service/StudentManager.java
@@ -1,7 +1,6 @@
package dev.service;
import dev.model.Student;
-
import java.util.ArrayList;
@@ -10,34 +9,28 @@ public class StudentManager {
private final ArrayList students = new ArrayList<>();
public void addStudents(ArrayList newStudents) {
-
- // TODO:
-
- // Merge students
-
- // Hint:
- // addAll()
-
+ students.addAll(newStudents);
}
-
public Student searchStudent(int id) {
- // TODO:
-
- // Loop through students
-
- // Compare IDs
+ for (Student student : students) {
+ if (student.getId() == id) {
+ return student;
+ }
+ }
return null;
}
+
public boolean removeStudent(int id) {
- // TODO:
+ Student student = searchStudent(id);
- // Find student
-
- // Remove student
+ if (student != null) {
+ 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..24b774e 100644
--- a/src/main/java/dev/thread/StudentLoader.java
+++ b/src/main/java/dev/thread/StudentLoader.java
@@ -25,30 +25,19 @@ public class StudentLoader extends Thread {
@Override
public void run() {
- // TODO:
-
- /*
- Example line:
-
- 1001,Aryan,Computer Science,3.7
- */
-
for (String line : lines) {
- // TODO:
- // split line
+ String[] parts = line.split(",");
- // TODO:
- // read values
+ int id = Integer.parseInt(parts[0]);
+ String name = parts[1];
+ String major = parts[2];
+ double gpa = Double.parseDouble(parts[3]);
- // TODO:
- // create Student
-
- // TODO:
- // add to students list
+ Student student = new Student(id, name, major, gpa);
+ students.add(student);
}
-
}
public ArrayList getStudents() {
diff --git a/src/main/java/dev/utils/FileManager.java b/src/main/java/dev/utils/FileManager.java
index da7f6f5..78364c8 100644
--- a/src/main/java/dev/utils/FileManager.java
+++ b/src/main/java/dev/utils/FileManager.java
@@ -16,14 +16,12 @@ public class FileManager {
String line;
+
while ((line = reader.readLine()) != null) {
-
- // TODO:
-
- // Add line to list
-
+ lines.add(line);
}
+
reader.close();
return lines;