diff --git a/02-lambdas.md b/02-lambdas.md index b918e45..e0a523d 100644 --- a/02-lambdas.md +++ b/02-lambdas.md @@ -492,14 +492,27 @@ public class Exercise_Lambdas { Using method reference for extractor ```java -public static void main(String[] args) { - List tasks = getTasks(); - List titles = filterAndExtract(tasks, task -> task.getType() == TaskType.READING, Task::getTitle); - titles.forEach(System.out::println); - List createdOnDates = filterAndExtract(tasks, task -> task.getType() == TaskType.READING, Task::getCreatedOn); - createdOnDates.forEach(System.out::println); - List filteredTasks = filterAndExtract(tasks, task -> task.getType() == TaskType.READING, Function.identity()); - filteredTasks.forEach(System.out::println); +public class Exercise_Lambdas { + + public static void main(String[] args) { + List tasks = getTasks(); + List titles = filterAndExtract(tasks, task -> task.getType() == TaskType.READING, Task::getTitle); + titles.forEach(System.out::println); + List createdOnDates = filterAndExtract(tasks, task -> task.getType() == TaskType.READING, Task::getCreatedOn); + createdOnDates.forEach(System.out::println); + List filteredTasks = filterAndExtract(tasks, task -> task.getType() == TaskType.READING, Function.identity()); + filteredTasks.forEach(System.out::println); + } + + public static List filterAndExtract(List tasks, Predicate filterTasks, Function extractor) { + List readingTitles = new ArrayList<>(); + for (Task task : tasks) { + if (filterTasks.test(task)) { + readingTitles.add(extractor.apply(task)); + } + } + return readingTitles; + } } ```