aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/util
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2016-04-01 11:10:26 +0100
committerMichael Williamson <mike@zwobble.org>2016-04-01 20:58:57 +0100
commite07bb984bd446f9f9ddd469c6458c5de6000097b (patch)
tree68a8f4658d56f2bf910e0fd0b9c58e28312fe853 /src/main/java/org/zwobble/couscous/util
parent6ae81cba8fad9973a53a15e2fbf67835899dc3bc (diff)
Ensure unique generated argument names
Diffstat (limited to 'src/main/java/org/zwobble/couscous/util')
-rw-r--r--src/main/java/org/zwobble/couscous/util/ExtraLists.java18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/main/java/org/zwobble/couscous/util/ExtraLists.java b/src/main/java/org/zwobble/couscous/util/ExtraLists.java
index 8485b02..3ee0ce3 100644
--- a/src/main/java/org/zwobble/couscous/util/ExtraLists.java
+++ b/src/main/java/org/zwobble/couscous/util/ExtraLists.java
@@ -85,6 +85,24 @@ public class ExtraLists {
.collect(Collectors.toList());
}
+ public static <T, R> List<R> eagerMapWithIndex(
+ Iterable<T> iterable,
+ FunctionWithIndex<T, R> function)
+ {
+ ImmutableList.Builder<R> builder = ImmutableList.builder();
+ int index = 0;
+ Iterator<T> iterator = iterable.iterator();
+ while (iterator.hasNext()) {
+ builder.add(function.apply(iterator.next(), index));
+ index++;
+ }
+ return builder.build();
+ }
+
+ public interface FunctionWithIndex<T, R> {
+ R apply(T value, int index);
+ }
+
public static <T1, T2, R> List<R> eagerMap(
Iterable<T1> iterable1,
Iterable<T2> iterable2,