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..c9acf98 100644
--- a/src/main/java/dev/Main.java
+++ b/src/main/java/dev/Main.java
@@ -4,19 +4,19 @@ import dev.service.StudentManager;
import dev.thread.StudentLoader;
import dev.utils.FileManager;
+import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
- public static void main(String[] args) throws Exception {
-
+ public static void main(String[] args) throws Exception
+ {
Scanner scanner = new Scanner(System.in);
-
StudentManager manager = new StudentManager();
- while (true) {
-
+ while (true)
+ {
System.out.println("""
1.Load students
2.Search student
@@ -27,73 +27,73 @@ public class Main {
int choice = scanner.nextInt();
- switch (choice) {
-
- case 1 -> {
-
+ switch (choice)
+ {
+ case 1 ->
+ {
List data = FileManager.loadStudents("students.txt");
- // TODO:
+ if (data.isEmpty())
+ {
+ System.out.println("No data found in file.");
+ break;
+ }
- // Split data into 3 parts
+ // TODO: Split data into 3 parts
+ int totalSize = data.size();
+ int chunkSize = (int) Math.ceil(totalSize / 3.0);
- List part1 = null;
+ List part1 = data.subList(0, Math.min(chunkSize, totalSize));
+ List part2 = data.subList(Math.min(chunkSize, totalSize), Math.min(2 * chunkSize, totalSize));
+ List part3 = data.subList(Math.min(2 * chunkSize, totalSize), totalSize);
- List part2 = null;
+ StudentLoader t1 = new StudentLoader(part1);
+ StudentLoader t2 = new StudentLoader(part2);
+ StudentLoader t3 = new StudentLoader(part3);
- List part3 = null;
+ t1.start();
+ t2.start();
+ t3.start();
- // TODO:
+ t1.join();
+ t2.join();
+ t3.join();
- StudentLoader t1 = null;
-
- StudentLoader t2 = null;
-
- 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 using 3 threads.");
}
- case 2 -> {
-
+ case 2 ->
+ {
System.out.print("ID: ");
-
int id = scanner.nextInt();
-
- System.out.println(manager.searchStudent(id));
-
+ var student = manager.searchStudent(id);
+ if (student != null)
+ {
+ System.out.println("Found: " + student);
+ }
+ else
+ {
+ System.out.println("Student not found.");
+ }
}
- case 3 -> {
-
+ case 3 ->
+ {
System.out.print("ID: ");
-
int id = scanner.nextInt();
-
boolean removed = manager.removeStudent(id);
-
- System.out.println(removed);
-
+ System.out.println("Removed: " + removed);
}
case 4 ->
manager.printStudents();
- case 5 -> {
- return;
- }
-
+ case 5 -> {return;}
}
-
}
-
}
-
}
\ No newline at end of file
diff --git a/src/main/java/dev/model/Student.java b/src/main/java/dev/model/Student.java
index f0484f4..65ad4b4 100644
--- a/src/main/java/dev/model/Student.java
+++ b/src/main/java/dev/model/Student.java
@@ -1,13 +1,10 @@
package dev.model;
-public class Student {
-
+public class Student
+{
private final int id;
-
private final String name;
-
private final String major;
-
private final double gpa;
public Student(
@@ -39,37 +36,22 @@ public class Student {
}
@Override
- public int hashCode() {
+ public int hashCode() {return id % 97;}
- // TODO:
- // Return custom hash
+ @Override
+ public boolean equals(Object obj)
+ {
+ if (this == obj) return true;
+ if (obj == null || getClass() != obj.getClass()) return false;
- // Example:
- // return id % 97;
+ Student other = (Student) obj;
- return 0;
+ return this.id == other.id;
}
@Override
- public boolean equals(Object obj) {
-
- // TODO:
-
- // Step 1:
- // Check null
-
- // Step 2:
- // Convert obj to Student
-
- // Step 3:
- // Compare IDs
-
- return false;
- }
-
- @Override
- public String toString() {
-
+ public String toString()
+ {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
@@ -77,5 +59,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..baa6bb4 100644
--- a/src/main/java/dev/service/StudentManager.java
+++ b/src/main/java/dev/service/StudentManager.java
@@ -1,55 +1,53 @@
package dev.service;
import dev.model.Student;
-
import java.util.ArrayList;
-
-public class StudentManager {
-
+public class StudentManager
+{
private final ArrayList students = new ArrayList<>();
- public void addStudents(ArrayList newStudents) {
-
- // TODO:
-
- // Merge students
-
- // Hint:
- // addAll()
-
+ public void addStudents(ArrayList newStudents)
+ {
+ students.addAll(newStudents);
}
- public Student searchStudent(int id) {
-
- // TODO:
-
- // Loop through students
-
- // Compare IDs
-
+ public Student searchStudent(int id)
+ {
+ for (Student student : students)
+ {
+ if (student.getId() == id) {return student;}
+ }
return null;
}
- public boolean removeStudent(int id) {
+ public boolean removeStudent(int id)
+ {
+ Student foundStudent = null;
- // TODO:
+ for (Student student : students)
+ {
+ if (student.getId() == id)
+ {
+ foundStudent = student;
+ break;
+ }
+ }
- // Find student
-
- // Remove student
+ if (foundStudent != null)
+ {
+ students.remove(foundStudent);
+ return true;
+ }
return false;
}
- public void printStudents() {
-
- for (Student student : students) {
-
+ public void printStudents()
+ {
+ for (Student student : students)
+ {
System.out.println(student);
-
}
-
}
-
}
\ No newline at end of file
diff --git a/src/main/java/dev/thread/StudentLoader.java b/src/main/java/dev/thread/StudentLoader.java
index ab47522..287f1f8 100644
--- a/src/main/java/dev/thread/StudentLoader.java
+++ b/src/main/java/dev/thread/StudentLoader.java
@@ -1,59 +1,51 @@
package dev.thread;
-
-
import dev.model.Student;
-
import java.util.ArrayList;
import java.util.List;
-public class StudentLoader extends Thread {
-
+public class StudentLoader extends Thread
+{
// Assigned file lines
-
private final List lines;
// Local student storage
-
private final ArrayList students = new ArrayList<>();
- public StudentLoader(List lines) {
-
- this.lines = lines;
- }
+ public StudentLoader(List lines) {this.lines = lines;}
@Override
- public void run() {
+ public void run()
+ {
+ for (String line : lines)
+ {
+ if (line == null || line.trim().isEmpty()) {continue;}
- // TODO:
+ String[] parts = line.split(",");
- /*
- Example line:
+ 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());
- 1001,Aryan,Computer Science,3.7
- */
+ Student student = new Student(id, name, major, gpa);
- for (String line : lines) {
-
- // TODO:
- // split line
-
- // TODO:
- // read values
-
- // TODO:
- // create Student
-
- // TODO:
- // add to students list
+ students.add(student);
+ }
+ catch (NumberFormatException e)
+ {
+ System.err.println("Skipping invalid line (format error): " + line);
+ }
+ }
}
-
}
public ArrayList getStudents() {
-
return students;
}
-
}
\ No newline at end of file
diff --git a/src/main/java/dev/utils/FileManager.java b/src/main/java/dev/utils/FileManager.java
index da7f6f5..101313f 100644
--- a/src/main/java/dev/utils/FileManager.java
+++ b/src/main/java/dev/utils/FileManager.java
@@ -2,31 +2,26 @@ package dev.utils;
import java.io.BufferedReader;
import java.io.FileReader;
-
import java.util.ArrayList;
import java.util.List;
public class FileManager {
- public static List loadStudents(String path) throws Exception {
-
+ public static List loadStudents(String path) throws Exception
+ {
List lines = new ArrayList<>();
BufferedReader reader = new BufferedReader(new FileReader(path));
String line;
- while ((line = reader.readLine()) != null) {
-
- // TODO:
-
- // Add line to list
-
+ while ((line = reader.readLine()) != null)
+ {
+ if (!line.trim().isEmpty()) {lines.add(line);}
}
reader.close();
return lines;
}
-
}
\ No newline at end of file