aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/util
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-11-28 19:43:34 +0000
committerMichael Williamson <mike@zwobble.org>2015-11-28 19:43:34 +0000
commit5cda2705b321cbea53249e181921195326c5fd55 (patch)
treea04f24d41daca7d5fb27dd0368b778a6f7e5ca7d /src/main/java/org/zwobble/couscous/util
parent05867c4658abaa0fc7ca7c0139e2cae4522e7057 (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.java23
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> {