diff options
| author | Michael Williamson <mike@zwobble.org> | 2015-11-28 19:43:34 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2015-11-28 19:43:34 +0000 |
| commit | 5cda2705b321cbea53249e181921195326c5fd55 (patch) | |
| tree | a04f24d41daca7d5fb27dd0368b778a6f7e5ca7d /src/main/java/org/zwobble/couscous/util | |
| parent | 05867c4658abaa0fc7ca7c0139e2cae4522e7057 (diff) | |
Simplify generation of anonymous classes
Diffstat (limited to 'src/main/java/org/zwobble/couscous/util')
| -rw-r--r-- | src/main/java/org/zwobble/couscous/util/ExtraLists.java | 23 |
1 files changed, 21 insertions, 2 deletions
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 <T> List<T> concat(List<T> first, List<T> second) { + public static <T> List<T> concat(List<? extends T> first, List<? extends T> second) { return Stream.concat(first.stream(), second.stream()).collect(Collectors.toList()); } + public static <T> List<T> concat(List<? extends T> first, List<? extends T> second, List<? extends T> third) { + return Stream.concat(Stream.concat(first.stream(), second.stream()), third.stream()).collect(Collectors.toList()); + } + @SuppressWarnings("unchecked") public static <T, R extends T> List<R> ofType(List<T> list, Class<R> clazz) { return (List<R>)list.stream() @@ -44,7 +49,13 @@ public class ExtraLists { throw (E)exception.exception; } } - + + public static <T> List<T> eagerFilter(Iterable<T> iterable, Predicate<T> predicate) { + return StreamSupport.stream(iterable.spliterator(), false) + .filter(predicate) + .collect(Collectors.toList()); + } + public static <T, R> List<R> eagerMap( Iterable<T> iterable, Function<T, R> function) { @@ -52,6 +63,14 @@ public class ExtraLists { .map(function) .collect(Collectors.toList()); } + + public static <T, R> List<R> eagerFlatMap( + Iterable<T> iterable, + Function<T, Iterable<R>> function) { + return StreamSupport.stream(iterable.spliterator(), false) + .flatMap(element -> StreamSupport.stream(function.apply(element).spliterator(), false)) + .collect(Collectors.toList()); + } @FunctionalInterface public interface CheckedFunction<T, R, E extends Exception> { |
