From 45bbda2ca45f6121a59b0ed2b225e8a11826c849 Mon Sep 17 00:00:00 2001 From: ziyi105 Date: Fri, 22 Sep 2023 17:15:51 +0800 Subject: [PATCH 1/2] Update main to use streams --- src/main/java/se/edu/streamdemo/Main.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/java/se/edu/streamdemo/Main.java b/src/main/java/se/edu/streamdemo/Main.java index c41d2d7..ad6bda2 100644 --- a/src/main/java/se/edu/streamdemo/Main.java +++ b/src/main/java/se/edu/streamdemo/Main.java @@ -32,13 +32,28 @@ 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 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 +61,11 @@ public static void printDeadlines(ArrayList tasksData) { } } + public static void printDeadlineUsingStream(ArrayList tasks) { + System.out.println("Using streams..."); + tasks.stream() + .filter((t) -> t instanceof Deadline) + .forEach(System.out::println); + } + } \ No newline at end of file From 5627fbb438382026b080a6d1d7c5ebe8a7c72d8f Mon Sep 17 00:00:00 2001 From: ziyi105 Date: Fri, 22 Sep 2023 17:42:33 +0800 Subject: [PATCH 2/2] Add code to demonstrate lambdas --- src/main/java/se/edu/streamdemo/Main.java | 31 ++++++++++++++++------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/main/java/se/edu/streamdemo/Main.java b/src/main/java/se/edu/streamdemo/Main.java index ad6bda2..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)); @@ -40,6 +47,13 @@ private static int countDeadlinesusingStream(ArrayList tasks) { 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) { @@ -61,11 +75,10 @@ public static void printDeadlines(ArrayList tasksData) { } } - public static void printDeadlineUsingStream(ArrayList tasks) { - System.out.println("Using streams..."); - tasks.stream() - .filter((t) -> t instanceof Deadline) - .forEach(System.out::println); + 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