You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2022/01/06 20:33:37 UTC
[groovy] 01/01: GROOVY-6837: prep work
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch GROOVY-6837
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit a63dd0374e80dae7f4e37d804ef1566280c689ef
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Thu Jan 6 14:15:32 2022 -0600
GROOVY-6837: prep work
---
.../groovy/runtime/DefaultGroovyMethods.java | 43 +++++++---------------
1 file changed, 14 insertions(+), 29 deletions(-)
diff --git a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
index 389074f..5c29b01 100644
--- a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
@@ -2119,8 +2119,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
*/
public static <T> T[] toUnique(T[] self, Comparator<T> comparator) {
Collection<T> items = toUnique(new ArrayIterable<>(self), comparator);
- T[] result = createSimilarArray(self, items.size());
- return items.toArray(result);
+ return items.toArray(createSimilarArray(self, items.size()));
}
/**
@@ -2138,9 +2137,8 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @param self an array
* @return the unique items from the array
*/
- @SuppressWarnings("unchecked")
public static <T> T[] toUnique(T[] self) {
- return (T[]) toUnique(self, (Comparator) null);
+ return toUnique(self, (Comparator<T>) null);
}
/**
@@ -9412,13 +9410,11 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @return the sorted array
* @since 1.8.1
*/
- @SuppressWarnings("unchecked")
public static <T> T[] sort(T[] self, boolean mutate, @ClosureParams(value=FromString.class, options={"T","T,T"}) Closure closure) {
- T[] answer = (T[]) sort((Iterable<T>) toList(self), closure).toArray();
- if (mutate) {
- System.arraycopy(answer, 0, self, 0, answer.length);
- }
- return mutate ? self : answer;
+ if (!mutate) self = self.clone();
+ Comparator<T> c = closure.getMaximumNumberOfParameters() == 1 ? new OrderBy<>(closure) : new ClosureComparator<>(closure);
+ Arrays.sort(self, c);
+ return self;
}
/**
@@ -9676,15 +9672,13 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* which is then used for further comparison.
*
* @param self the array containing the elements to be sorted
- * @param condition a Closure used to determine the correct ordering
+ * @param closure a Closure used to determine the correct ordering
* @return a sorted array
* @see #toSorted(Object[], Comparator)
* @since 2.4.0
*/
- public static <T> T[] toSorted(T[] self, @ClosureParams(value=FromString.class, options={"T","T,T"}) Closure condition) {
- Comparator<T> comparator = (condition.getMaximumNumberOfParameters() == 1) ? new OrderBy<>(condition) : new ClosureComparator<>(
- condition);
- return toSorted(self, comparator);
+ public static <T> T[] toSorted(T[] self, @ClosureParams(value=FromString.class, options={"T","T,T"}) Closure closure) {
+ return sort(self, false, closure);
}
/**
@@ -10182,9 +10176,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
if (self.length == 0) {
throw new NoSuchElementException("Cannot access tail() for an empty array");
}
- T[] result = createSimilarArray(self, self.length - 1);
- System.arraycopy(self, 1, result, 0, self.length - 1);
- return result;
+ return Arrays.copyOfRange(self, 1, self.length);
}
/**
@@ -10352,9 +10344,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
if (self.length == 0) {
throw new NoSuchElementException("Cannot access init() for an empty Object array");
}
- T[] result = createSimilarArray(self, self.length - 1);
- System.arraycopy(self, 0, result, 0, self.length - 1);
- return result;
+ return Arrays.copyOfRange(self, 0, self.length - 1);
}
/**
@@ -12248,14 +12238,9 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
* @since 1.8.1
*/
public static <T> T[] reverse(T[] self, boolean mutate) {
- List<T> list = Arrays.asList(self);
- if (mutate) {
- Collections.reverse(list);
- return self;
- }
- @SuppressWarnings("unchecked")
- T[] result = (T[]) toList(new ReverseListIterator<>(list)).toArray();
- return result;
+ if (!mutate) self = self.clone();
+ Collections.reverse(Arrays.asList(self));
+ return self;
}
/**