This is an automated email from the ASF dual-hosted git repository.
paulk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new c3c909ca5d GROOVY-11650: Create drain extension method for Queues
c3c909ca5d is described below
commit c3c909ca5d0b3b53ccb81582b102dedb29626cf6
Author: Paul King <[email protected]>
AuthorDate: Sun May 4 14:57:00 2025 +1000
GROOVY-11650: Create drain extension method for Queues
---
.../groovy/runtime/DefaultGroovyMethods.java | 25 ++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git
a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
index 761ccb6c2f..c47078861e 100644
--- a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
@@ -4094,6 +4094,31 @@ public class DefaultGroovyMethods extends
DefaultGroovyMethodsSupport {
") to downto() cannot be greater than the value (" +
self + ") it's called on."); }
}
+
//--------------------------------------------------------------------------
+ // drain
+
+ /**
+ * Drain the queue of elements, returning them as a list.
+ * <pre class="groovyTestCase">
+ * def letters = new PriorityQueue(String.CASE_INSENSITIVE_ORDER)
+ * letters.addAll(['Z', 'y', 'X', 'a', 'B', 'c'])
+ * assert letters.toList() == ['a', 'B', 'c', 'Z', 'X', 'y']
+ * assert letters.drain() == ['a', 'B', 'c', 'X', 'y', 'Z']
+ * assert letters.empty
+ * </pre>
+ *
+ * @param self a Queue
+ * @return a List of elements removed from the head of the queue
+ * @since 5.0.0
+ */
+ public static <T> List<T> drain(Queue<T> self) {
+ List<T> answer = new ArrayList<>();
+ while (!self.isEmpty()) {
+ answer.add(self.poll());
+ }
+ return answer;
+ }
+
//--------------------------------------------------------------------------
// drop