This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-collections.git
The following commit(s) were added to refs/heads/master by this push:
new 2a0f86a94 Add FilterIterator.removeNext() #564
new 332276998 Merge branch 'master' of
https://gitbox.apache.org/repos/asf/commons-collections.git
2a0f86a94 is described below
commit 2a0f86a94d1a6808d12f04d6bf2d5ef8257a33ab
Author: Gary Gregory <[email protected]>
AuthorDate: Fri Nov 1 16:11:38 2024 -0400
Add FilterIterator.removeNext() #564
---
src/changes/changes.xml | 1 +
.../commons/collections4/iterators/FilterIterator.java | 12 ++++++++++++
.../collections4/iterators/FilterIteratorTest.java | 17 ++++++++++++++++-
3 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 2843c6265..81c2f430e 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -59,6 +59,7 @@
<action type="add" issue="COLLECTIONS-869" dev="ggregory" due-to="Gary
Gregory">Add
org.apache.commons.collections4.IteratorUtils.chainedIterator(Iterator<?
extends Iterator<? extends E>>).</action>
<action type="add" dev="ggregory" due-to="Peter De Maeyer"
issue="COLLECTIONS-533">Add ArrayListValuedLinkedHashMap #560.</action>
<action type="fix" dev="ggregory" due-to="Gary Gregory">Add missing test
AbstractIteratorTest.testForEachRemaining().</action>
+ <action type="fix" dev="ggregory" due-to="Gary Gregory, Claude Warren">Add
FilterIterator.removeNext() #564.</action>
<!-- UPDATE -->
<action type="update" dev="ggregory" due-to="Gary Gregory">Bump
org.apache.commons:commons-parent from 71 to 78 #534, #545, #550 #555,
#566.</action>
<action type="update" issue="COLLECTIONS-857" dev="ggregory"
due-to="Claude Warren">Update bloom filter documentation #508.</action>
diff --git
a/src/main/java/org/apache/commons/collections4/iterators/FilterIterator.java
b/src/main/java/org/apache/commons/collections4/iterators/FilterIterator.java
index 98047fe66..e9872a2b1 100644
---
a/src/main/java/org/apache/commons/collections4/iterators/FilterIterator.java
+++
b/src/main/java/org/apache/commons/collections4/iterators/FilterIterator.java
@@ -141,6 +141,18 @@ public class FilterIterator<E> implements Iterator<E> {
iterator.remove();
}
+ /**
+ * Returns the next item and removes it from the iterator.
+ *
+ * @return the next item from the iterator.
+ * @since 4.5.0-M3
+ */
+ public E removeNext() {
+ final E result = next();
+ remove();
+ return result;
+ }
+
private Predicate<? super E> safePredicate(final Predicate<? super E>
predicate) {
return predicate != null ? predicate : TruePredicate.truePredicate();
}
diff --git
a/src/test/java/org/apache/commons/collections4/iterators/FilterIteratorTest.java
b/src/test/java/org/apache/commons/collections4/iterators/FilterIteratorTest.java
index f8ef27c6f..582e79a4d 100644
---
a/src/test/java/org/apache/commons/collections4/iterators/FilterIteratorTest.java
+++
b/src/test/java/org/apache/commons/collections4/iterators/FilterIteratorTest.java
@@ -172,6 +172,22 @@ public class FilterIteratorTest<E> extends
AbstractIteratorTest<E> {
assertTrue(actual.isEmpty());
}
+ @Test
+ public void testRemoveNext() {
+ final FilterIterator<E> iter = makeObject();
+ final E i = iter.removeNext();
+ assertFalse(list.contains(i));
+ final List<E> actual = new ArrayList<>();
+ iter.forEachRemaining(actual::add);
+ assertEquals(list, actual);
+ }
+
+ @Test
+ public void testRemoveNextEmpty() {
+ final FilterIterator<E> empty = makeEmptyIterator();
+ assertThrows(NoSuchElementException.class, empty::removeNext);
+ }
+
@Test
public void testRepeatedHasNext() {
for (int i = 0; i <= array.length; i++) {
@@ -188,7 +204,6 @@ public class FilterIteratorTest<E> extends
AbstractIteratorTest<E> {
verifyNoMoreElements();
}
-
@Test
public void testReturnValues() {
verifyElementsInPredicate(ArrayUtils.EMPTY_STRING_ARRAY);