From d299b608799b3b722e97ba0b3f41edb122dc4786 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Wed, 30 Mar 2016 14:27:25 +0100 Subject: Remove duplicates when finding captured variables --- .../zwobble/couscous/util/InsertionOrderSet.java | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/main/java/org/zwobble/couscous/util/InsertionOrderSet.java (limited to 'src/main/java/org/zwobble/couscous/util/InsertionOrderSet.java') diff --git a/src/main/java/org/zwobble/couscous/util/InsertionOrderSet.java b/src/main/java/org/zwobble/couscous/util/InsertionOrderSet.java new file mode 100644 index 0000000..4272add --- /dev/null +++ b/src/main/java/org/zwobble/couscous/util/InsertionOrderSet.java @@ -0,0 +1,27 @@ +package org.zwobble.couscous.util; + +import java.util.Iterator; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.StreamSupport; + +public interface InsertionOrderSet extends Iterable { + static InsertionOrderSet copyOf(Iterable iterable) { + List list = StreamSupport.stream(iterable.spliterator(), false) + .distinct() + .collect(Collectors.toList()); + return new InsertionOrderSet() { + @Override + public List asList() { + return list; + } + + @Override + public Iterator iterator() { + return list.iterator(); + } + }; + } + + List asList(); +} -- cgit v1.2.3