diff --git a/src/main/java/se/edu/streamdemo/Main.java b/src/main/java/se/edu/streamdemo/Main.java index c41d2d7..73b27bd 100644 --- a/src/main/java/se/edu/streamdemo/Main.java +++ b/src/main/java/se/edu/streamdemo/Main.java @@ -5,6 +5,9 @@ import se.edu.streamdemo.task.Task; import java.util.ArrayList; +import java.util.stream.Collectors; + +import static java.util.stream.Collectors.toList; public class Main { public static void main(String[] args) { @@ -12,11 +15,15 @@ public static void main(String[] args) { DataManager dataManager = new DataManager("./data/data.txt"); ArrayList tasksData = dataManager.loadData(); - System.out.println("Printing all data ..."); - printAllData(tasksData); +// System.out.println("Printing all data ..."); +// printAllData(tasksData); - System.out.println("Printing deadlines ..."); + System.out.println("Printing deadlines ...(Before sorting)"); printDeadlines(tasksData); + System.out.println("printing deadlines (after sorting)"); + printDeadlineUsingStreams(tasksData); + + ArrayList filteredList = filterTaskListBy(tasksData, "11"); System.out.println("Total number of deadlines: " + countDeadlines(tasksData)); @@ -32,13 +39,35 @@ private static int countDeadlines(ArrayList tasksData) { return count; } + private static int countDeadlinesusingStream(ArrayList tasks) { + int count = (int) tasks.stream() + .filter((t) -> t instanceof Deadline) + .count(); + + return count; + } + + public static void printDeadlineUsingStreams(ArrayList tasks) { + tasks.stream() + .filter((t) -> t instanceof Deadline) + .sorted((t1, t2) -> t1.getDescription().compareToIgnoreCase(t2.getDescription())) + .forEach(System.out::println); + } + public static void printAllData(ArrayList tasksData) { + System.out.println("Using iteration..."); for (Task t : tasksData) { System.out.println(t); } } + public static void printAllDataUsingStream(ArrayList tasks) { + System.out.println("Using streams..."); + tasks.stream() + .forEach(System.out::println); + } public static void printDeadlines(ArrayList tasksData) { + System.out.println("Using iteration..."); for (Task t : tasksData) { if (t instanceof Deadline) { System.out.println(t); @@ -46,4 +75,10 @@ public static void printDeadlines(ArrayList tasksData) { } } + public static ArrayList filterTaskListBy(ArrayList tasks, String filterString) { + ArrayList filteredList = (ArrayList) tasks.stream() + .filter((t)-> t.getDescription().contains(filterString)) + .collect(toList()); + return filteredList; + } } \ No newline at end of file