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..a9076af
--- /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..e9471ee 100644
--- a/src/main/java/dev/Main.java
+++ b/src/main/java/dev/Main.java
@@ -12,18 +12,17 @@ public class Main {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
-
StudentManager manager = new StudentManager();
while (true) {
+ System.out.println("\n--- Student Search Engine Menu ---");
+ System.out.println("1. Load students");
+ System.out.println("2. Search student");
+ System.out.println("3. Remove student");
+ System.out.println("4. Print all students");
+ System.out.println("5. Exit");
+ System.out.print("Enter your choice: ");
- System.out.println("""
- 1.Load students
- 2.Search student
- 3.Remove student
- 4.Print students
- 5.Exit
- """);
int choice = scanner.nextInt();
@@ -33,32 +32,28 @@ public class Main {
List data = FileManager.loadStudents("students.txt");
- // TODO:
+ int size = data.size();
+ List part1 = data.subList(0, size/3);
+ List part2 = data.subList(size/3, (size/3)*2);
+ List part3 = data.subList((size/3)*2, size);
- // Split data into 3 parts
+ StudentLoader t1 = new StudentLoader(part1);
+ StudentLoader t2 = new StudentLoader(part2);
+ StudentLoader t3 = new StudentLoader(part3);
- List part1 = null;
+ t1.start();
+ t2.start();
+ t3.start();
- List part2 = null;
+ t1.join();
+ t2.join();
+ t3.join();
- List part3 = null;
-
- // TODO:
-
- 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("Student loaded successfully.");
}
case 2 -> {
diff --git a/src/main/java/dev/model/Student.java b/src/main/java/dev/model/Student.java
index f0484f4..f49d989 100644
--- a/src/main/java/dev/model/Student.java
+++ b/src/main/java/dev/model/Student.java
@@ -40,31 +40,22 @@ 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(getClass() != obj.getClass()){
+ return false;
+ }
+ Student otherStudent = (Student)obj;
- // Step 2:
- // Convert obj to Student
-
- // Step 3:
- // Compare IDs
-
- return false;
+ return this.id == otherStudent.id;
}
@Override
diff --git a/src/main/java/dev/service/StudentManager.java b/src/main/java/dev/service/StudentManager.java
index 403a1c6..9c346f7 100644
--- a/src/main/java/dev/service/StudentManager.java
+++ b/src/main/java/dev/service/StudentManager.java
@@ -4,50 +4,49 @@ import dev.model.Student;
import java.util.ArrayList;
-
public class StudentManager {
private final ArrayList students = new ArrayList<>();
public void addStudents(ArrayList newStudents) {
-
- // TODO:
-
- // Merge students
-
- // Hint:
- // addAll()
-
+ if(newStudents != null){
+ this.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) {
+ Student foundStudent = null;
+ for (Student s : students){
+ if (s.getId() == id){
+ foundStudent = s;
+ break;
+ }
+ }
- // TODO:
-
- // Find student
-
- // Remove student
-
+ if (foundStudent != null){
+ students.remove(foundStudent);
+ return true;
+ }
return false;
}
public void printStudents() {
+ if (students.isEmpty()) {
+ System.out.println("No students to display.");
+ return;
+ }
for (Student student : students) {
-
System.out.println(student);
-
}
}
diff --git a/src/main/java/dev/thread/StudentLoader.java b/src/main/java/dev/thread/StudentLoader.java
index ab47522..87cb950 100644
--- a/src/main/java/dev/thread/StudentLoader.java
+++ b/src/main/java/dev/thread/StudentLoader.java
@@ -9,46 +9,38 @@ import java.util.List;
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) {
-
+ public StudentLoader(Listlines) {
this.lines = lines;
}
@Override
public void run() {
-
- // TODO:
-
- /*
- Example line:
-
- 1001,Aryan,Computer Science,3.7
- */
-
for (String line : lines) {
+ if(line == null || line.trim().isEmpty()){
+ continue;
+ }
+ String[] parts = line.split(",");
- // TODO:
- // split line
-
- // TODO:
- // read values
-
- // TODO:
- // create Student
-
- // TODO:
- // add to students list
+ 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());
+ Student student = new Student(id, name, major, gpa);
+ students.add(student);
+ }catch (Exception e){
+ System.out.println(e.getMessage());
+ }
+ }else{
+ System.out.println("skipping malformed line: " + line);
+ }
}
-
}
public ArrayList getStudents() {
diff --git a/src/main/java/dev/utils/FileManager.java b/src/main/java/dev/utils/FileManager.java
index da7f6f5..69b8da4 100644
--- a/src/main/java/dev/utils/FileManager.java
+++ b/src/main/java/dev/utils/FileManager.java
@@ -13,20 +13,13 @@ public class FileManager {
List lines = new ArrayList<>();
BufferedReader reader = new BufferedReader(new FileReader(path));
-
String line;
-
while ((line = reader.readLine()) != null) {
-
- // TODO:
-
- // Add line to list
-
+ if (!line.trim().isEmpty()) {
+ lines.add(line.trim());
+ }
}
-
reader.close();
-
return lines;
}
-
}
\ No newline at end of file
diff --git a/src/main/java/lecture/multithreading/timeout/Main.java b/src/main/java/lecture/multithreading/timeout/Main.java
index 8258073..38b1bd6 100644
--- a/src/main/java/lecture/multithreading/timeout/Main.java
+++ b/src/main/java/lecture/multithreading/timeout/Main.java
@@ -1,10 +1,23 @@
package lecture.multithreading.timeout;
+import java.util.Scanner;
public class Main {
public static void main(String[] args) {
- // TODO
+ Scanner scanner = new Scanner(System.in);
+
+ System.out.println("you have 10 seconds: ");
+ System.out.println("enter your name: ");
+
+ MyRunnable myRunnable = new MyRunnable();
+ Thread thread = new Thread(myRunnable);
+ thread.setDaemon(true);
+ thread.start();
+
+ String name = scanner.nextLine();
+ System.out.println("Hello " + name);
+ scanner.close();
}
}
diff --git a/src/main/java/lecture/multithreading/timeout/MyRunnable.java b/src/main/java/lecture/multithreading/timeout/MyRunnable.java
new file mode 100644
index 0000000..5d000e3
--- /dev/null
+++ b/src/main/java/lecture/multithreading/timeout/MyRunnable.java
@@ -0,0 +1,20 @@
+package lecture.multithreading.timeout;
+
+public class MyRunnable implements Runnable{
+
+ @Override
+ public void run() {
+ for (int i = 0; i <= 10; i++) {
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException e) {
+ System.out.println("thread was interrupted");
+ }
+
+ if(i==10){
+ System.out.println("time is up");
+ System.exit(0);
+ }
+ }
+ }
+}