From 5cda2705b321cbea53249e181921195326c5fd55 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Sat, 28 Nov 2015 19:43:34 +0000 Subject: Simplify generation of anonymous classes --- .../java/org/zwobble/couscous/util/ExtraLists.java | 23 ++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'src/main/java/org/zwobble/couscous/util') diff --git a/src/main/java/org/zwobble/couscous/util/ExtraLists.java b/src/main/java/org/zwobble/couscous/util/ExtraLists.java index de28f21..e0c183a 100644 --- a/src/main/java/org/zwobble/couscous/util/ExtraLists.java +++ b/src/main/java/org/zwobble/couscous/util/ExtraLists.java @@ -2,6 +2,7 @@ package org.zwobble.couscous.util; import java.util.List; import java.util.function.Function; +import java.util.function.Predicate; import java.util.stream.Collectors; import java.util.stream.Stream; import java.util.stream.StreamSupport; @@ -15,10 +16,14 @@ public class ExtraLists { return Stream.concat(list.stream(), Stream.of(value)).collect(Collectors.toList()); } - public static List concat(List first, List second) { + public static List concat(List first, List second) { return Stream.concat(first.stream(), second.stream()).collect(Collectors.toList()); } + public static List concat(List first, List second, List third) { + return Stream.concat(Stream.concat(first.stream(), second.stream()), third.stream()).collect(Collectors.toList()); + } + @SuppressWarnings("unchecked") public static List ofType(List list, Class clazz) { return (List)list.stream() @@ -44,7 +49,13 @@ public class ExtraLists { throw (E)exception.exception; } } - + + public static List eagerFilter(Iterable iterable, Predicate predicate) { + return StreamSupport.stream(iterable.spliterator(), false) + .filter(predicate) + .collect(Collectors.toList()); + } + public static List eagerMap( Iterable iterable, Function function) { @@ -52,6 +63,14 @@ public class ExtraLists { .map(function) .collect(Collectors.toList()); } + + public static List eagerFlatMap( + Iterable iterable, + Function> function) { + return StreamSupport.stream(iterable.spliterator(), false) + .flatMap(element -> StreamSupport.stream(function.apply(element).spliterator(), false)) + .collect(Collectors.toList()); + } @FunctionalInterface public interface CheckedFunction { -- cgit v1.2.3