diff --git a/eclipse-collections-code-generator/src/main/resources/impl/list/immutable/immutablePrimitiveArrayList.stg b/eclipse-collections-code-generator/src/main/resources/impl/list/immutable/immutablePrimitiveArrayList.stg index a42405b9cf..d029326363 100644 --- a/eclipse-collections-code-generator/src/main/resources/impl/list/immutable/immutablePrimitiveArrayList.stg +++ b/eclipse-collections-code-generator/src/main/resources/impl/list/immutable/immutablePrimitiveArrayList.stg @@ -721,17 +721,8 @@ final class ImmutableArrayList @Override public ImmutableList distinct() { - ArrayList target = new ArrayList(); MutableSet seenSoFar = new HashSet(this.size()); - - for ( each : this.items) - { - if (seenSoFar.add(each)) - { - target.add(each); - } - } - return target.toImmutable(); + return this.select(seenSoFar::add); } @Override diff --git a/eclipse-collections-code-generator/src/main/resources/impl/list/mutable/primitiveArrayList.stg b/eclipse-collections-code-generator/src/main/resources/impl/list/mutable/primitiveArrayList.stg index 0f55662253..0ace843818 100644 --- a/eclipse-collections-code-generator/src/main/resources/impl/list/mutable/primitiveArrayList.stg +++ b/eclipse-collections-code-generator/src/main/resources/impl/list/mutable/primitiveArrayList.stg @@ -1022,18 +1022,8 @@ public class ArrayList extends AbstractIterable @Override public MutableList distinct() { - ArrayList target = new ArrayList(); MutableSet seenSoFar = new HashSet(this.size()); - - for (int i = 0; i \< this.size; i++) - { - each = this.items[i]; - if (seenSoFar.add(each)) - { - target.add(each); - } - } - return target; + return this.select(seenSoFar::add); } @Override diff --git a/eclipse-collections/src/main/java/org/eclipse/collections/impl/string/immutable/CharAdapter.java b/eclipse-collections/src/main/java/org/eclipse/collections/impl/string/immutable/CharAdapter.java index 2645fd6765..b54e34b727 100644 --- a/eclipse-collections/src/main/java/org/eclipse/collections/impl/string/immutable/CharAdapter.java +++ b/eclipse-collections/src/main/java/org/eclipse/collections/impl/string/immutable/CharAdapter.java @@ -166,19 +166,8 @@ public void each(CharProcedure procedure) @Override public CharAdapter distinct() { - StringBuilder builder = new StringBuilder(); MutableCharSet seenSoFar = CharSets.mutable.empty(); - - int size = this.size(); - for (int i = 0; i < size; i++) - { - char each = this.get(i); - if (seenSoFar.add(each)) - { - builder.append(each); - } - } - return new CharAdapter(builder.toString()); + return this.select(seenSoFar::add); } @Override diff --git a/eclipse-collections/src/main/java/org/eclipse/collections/impl/string/immutable/CodePointAdapter.java b/eclipse-collections/src/main/java/org/eclipse/collections/impl/string/immutable/CodePointAdapter.java index 4323acfe03..c6c5b575cb 100644 --- a/eclipse-collections/src/main/java/org/eclipse/collections/impl/string/immutable/CodePointAdapter.java +++ b/eclipse-collections/src/main/java/org/eclipse/collections/impl/string/immutable/CodePointAdapter.java @@ -174,20 +174,8 @@ public void each(IntProcedure procedure) @Override public CodePointAdapter distinct() { - StringBuilder builder = new StringBuilder(); MutableIntSet seenSoFar = IntSets.mutable.empty(); - - int length = this.adapted.length(); - for (int i = 0; i < length; ) - { - int codePoint = this.adapted.codePointAt(i); - if (seenSoFar.add(codePoint)) - { - builder.appendCodePoint(codePoint); - } - i += Character.charCount(codePoint); - } - return new CodePointAdapter(builder.toString()); + return this.select(seenSoFar::add); } @Override diff --git a/eclipse-collections/src/main/java/org/eclipse/collections/impl/utility/internal/InternalArrayIterate.java b/eclipse-collections/src/main/java/org/eclipse/collections/impl/utility/internal/InternalArrayIterate.java index 743fee29d4..6ef3ab6f7f 100644 --- a/eclipse-collections/src/main/java/org/eclipse/collections/impl/utility/internal/InternalArrayIterate.java +++ b/eclipse-collections/src/main/java/org/eclipse/collections/impl/utility/internal/InternalArrayIterate.java @@ -924,16 +924,7 @@ public static void forEachWithIndex(T[] objectArray, int size, ObjectIntProc public static > R distinct(T[] objectArray, int size, R targetList) { MutableSet seenSoFar = Sets.mutable.empty(); - - for (int i = 0; i < size; i++) - { - T each = objectArray[i]; - if (seenSoFar.add(each)) - { - targetList.add(each); - } - } - return targetList; + return InternalArrayIterate.select(objectArray, size, seenSoFar::add, targetList); } /** @@ -950,17 +941,7 @@ public static FastList distinct(T[] objectArray, int size) public static FastList distinct(T[] objectArray, int size, HashingStrategy hashingStrategy) { MutableSet seenSoFar = UnifiedSetWithHashingStrategy.newSet(hashingStrategy); - - FastList result = FastList.newList(); - for (int i = 0; i < size; i++) - { - T each = objectArray[i]; - if (seenSoFar.add(each)) - { - result.add(each); - } - } - return result; + return InternalArrayIterate.select(objectArray, size, seenSoFar::add, FastList.newList()); } public static long sumOfInt(T[] array, int size, IntFunction function) diff --git a/eclipse-collections/src/main/java/org/eclipse/collections/impl/utility/internal/IteratorIterate.java b/eclipse-collections/src/main/java/org/eclipse/collections/impl/utility/internal/IteratorIterate.java index df85e0d08b..91c44c55c7 100644 --- a/eclipse-collections/src/main/java/org/eclipse/collections/impl/utility/internal/IteratorIterate.java +++ b/eclipse-collections/src/main/java/org/eclipse/collections/impl/utility/internal/IteratorIterate.java @@ -1097,20 +1097,10 @@ public static > R groupByUniqueKey( * @deprecated in 7.0. */ @Deprecated - public static > R distinct( - Iterator iterator, - R targetCollection) + public static > R distinct(Iterator iterator, R targetCollection) { Set seenSoFar = Sets.mutable.empty(); - while (iterator.hasNext()) - { - T item = iterator.next(); - if (seenSoFar.add(item)) - { - targetCollection.add(item); - } - } - return targetCollection; + return IteratorIterate.select(iterator, seenSoFar::add, targetCollection); } /** diff --git a/eclipse-collections/src/main/java/org/eclipse/collections/impl/utility/internal/RandomAccessListIterate.java b/eclipse-collections/src/main/java/org/eclipse/collections/impl/utility/internal/RandomAccessListIterate.java index 54ab2fe66f..acacbb284a 100644 --- a/eclipse-collections/src/main/java/org/eclipse/collections/impl/utility/internal/RandomAccessListIterate.java +++ b/eclipse-collections/src/main/java/org/eclipse/collections/impl/utility/internal/RandomAccessListIterate.java @@ -1265,16 +1265,7 @@ public static > R collectWith( public static > R distinct(List list, R targetList) { MutableSet seenSoFar = Sets.mutable.empty(); - int size = list.size(); - for (int i = 0; i < size; i++) - { - T item = list.get(i); - if (seenSoFar.add(item)) - { - targetList.add(item); - } - } - return targetList; + return RandomAccessListIterate.select(list, seenSoFar::add, targetList); } /**