Skip to content

Commit 446f6e8

Browse files
ADD: Java Generics - Creating a Generic To-Do List Manager
1 parent ce12212 commit 446f6e8

File tree

2 files changed

+120
-0
lines changed

2 files changed

+120
-0
lines changed
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
import java.util.Scanner;
2+
3+
public class Main {
4+
public static void main(String[] args) {
5+
Scanner scanner = new Scanner(System.in);
6+
TodoListManager<String> toDoListManager = new TodoListManager<>(); // Managing String tasks
7+
String command;
8+
9+
do {
10+
System.out.println("\nEnter a command (add/view/remove/complete/save/load/exit):");
11+
command = scanner.nextLine();
12+
13+
switch (command) {
14+
case "add":
15+
System.out.println("Enter the task:");
16+
String task = scanner.nextLine();
17+
toDoListManager.addTask(task);
18+
break;
19+
case "view":
20+
toDoListManager.viewTasks();
21+
break;
22+
case "remove":
23+
System.out.println("Enter the task number to remove:");
24+
int taskNumber = scanner.nextInt();
25+
scanner.nextLine(); // Consume newline
26+
toDoListManager.removeTask(taskNumber);
27+
break;
28+
case "complete":
29+
System.out.println("Enter the task number to complete:");
30+
int completeTaskNumber = scanner.nextInt();
31+
scanner.nextLine(); // Consume newline
32+
toDoListManager.completeTask(completeTaskNumber);
33+
break;
34+
case "save":
35+
System.out.println("Enter the filename to save tasks:");
36+
String saveFilename = scanner.nextLine();
37+
toDoListManager.saveTasksToFile(saveFilename);
38+
break;
39+
case "load":
40+
System.out.println("Enter the filename to load tasks:");
41+
String loadFilename = scanner.nextLine();
42+
toDoListManager.loadTasksFromFile(loadFilename);
43+
break;
44+
case "exit":
45+
System.out.println("Exiting the application.");
46+
break;
47+
default:
48+
System.out.println("Invalid command.");
49+
}
50+
} while (!command.equals("exit"));
51+
52+
scanner.close();
53+
}
54+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
import java.util.ArrayList;
2+
import java.io.*;
3+
4+
public class TodoListManager<T> {
5+
private ArrayList<T> tasks;
6+
7+
public TodoListManager() {
8+
tasks = new ArrayList<>();
9+
}
10+
11+
public void addTask(T task) {
12+
tasks.add(task);
13+
System.out.println("Task added: " + task);
14+
}
15+
16+
public void viewTasks() {
17+
if (tasks.isEmpty()) {
18+
System.out.println("No tasks in the list.");
19+
} else {
20+
for (int i = 0; i < tasks.size(); i++) {
21+
System.out.println((i + 1) + ". " + tasks.get(i));
22+
}
23+
}
24+
}
25+
26+
public void removeTask(int index) {
27+
if (index >= 1 && index <= tasks.size()) {
28+
System.out.println("Task removed: " + tasks.get(index - 1));
29+
tasks.remove(index - 1);
30+
} else {
31+
System.out.println("Invalid task number.");
32+
}
33+
}
34+
35+
public void completeTask(int index) {
36+
if (index >= 1 && index <= tasks.size()) {
37+
System.out.println("Task completed: " + tasks.get(index - 1));
38+
tasks.remove(index - 1);
39+
} else {
40+
System.out.println("Invalid task number.");
41+
}
42+
}
43+
44+
public void saveTasksToFile(String filename) {
45+
try (FileWriter writer = new FileWriter(filename)) {
46+
for (T task : tasks) {
47+
writer.write(task.toString() + "\n");
48+
}
49+
System.out.println("Tasks saved to " + filename);
50+
} catch (IOException e) {
51+
System.out.println("Error saving tasks: " + e.getMessage());
52+
}
53+
}
54+
55+
public void loadTasksFromFile(String filename) {
56+
try (BufferedReader reader = new BufferedReader(new FileReader(filename))) {
57+
String task;
58+
while ((task = reader.readLine()) != null) {
59+
// This will need casting depending on the task type
60+
System.out.println("Task loaded: " + task);
61+
}
62+
} catch (IOException e) {
63+
System.out.println("Error loading tasks: " + e.getMessage());
64+
}
65+
}
66+
}

0 commit comments

Comments
 (0)